思路:
这种题就是哈希题,可以使用哈希来解决,哈希就可以分为数组,set和map,因为我们这到底要记录数组下标和下标对应的数,所以我们需要选择map来解决,我们遍历这个数组,每遍历到一个数都和target减一下,减之后的这个值我们设置为balance,如果这个map中有这个balance,我们就可以返回当前的下标和map中对应数字的下标。如果map中没有这个balance,那就把当前数字和下标存入map中就可以了,直到找到两数之和。
代码:
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> res = new HashMap<>();for(int i=0;i<nums.length;i++){int balance = target - nums[i];if(res.containsKey(balance)){return new int[]{i,res.get(balance)};}else{res.put(nums[i],i);}}return null;}
}