思路:
采用哈希表的方法,给值查位置的想法
(1)定义一个 HashMap<Integer, Integer>,key为元素的值(因为nums[i] + nums[j] = target),val为下标
(2)遍历数组,遍历到i时判断若哈希表包含key为target - nums[i],则此时两key相加的值就是target,而val就是下标,返回两个下标即可,
否则就把当前i位置的元素值作key存入哈希表中
(3)循环结束也没返回代表没找到,返回null
代码:
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
if(map.containsKey(target - nums[i]) ){
return new int[]{map.get(target - nums[i]), i};
}else{
map.put(nums[i], i);
}
}
return null;
}
}