题解 | #两数之和# 借助HashMap 空间换时间
两数之和
https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
import java.util.*; public class Solution { /** * * @param numbers int整型一维数组 * @param target int整型 * @return int整型一维数组 */ public int[] twoSum (int[] numbers, int target) { // 思路1 双层循环实现 效率偏低 int[] res = new int[2]; // for(int i = 0;i< numbers.length - 1;i++){ // int cur = numbers[i]; // for(int j = i + 1;j<numbers.length;j++){ // if(cur + numbers[j] == target){ // res[0] = i + 1; // res[1] = j + 1; // } // } // } // 思路2 借助Hash表 一次循环实现 空间换时间 HashMap<Integer,Integer> hash = new HashMap<>(); for(int i = 0;i<numbers.length;i++){ if(hash.containsKey(target - numbers[i])){ res[0] = hash.get(target - numbers[i]) + 1; res[1] = i + 1; } else { hash.put(numbers[i],i); } } return res; } }