解法思路:
维护一个map,key为数组中的数字,value为此数在数组中的位置。
在循环的时候,做一个判断,如果当前数字存在与map中的某个数字的和符合题目要求(即为0),直接return这两个数字的位置,否则将这个数添加进map中。
public int[] twoSum(int[] nums, int target) { int capacity = 1; while (nums.length > capacity) capacity <<= 1; // 数字,位置 Map<Integer, Integer> map = new HashMap<>(capacity); 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; }