algorithm easy
public int[] twoSum2(int[] nums, int target) {HashMap<Integer, Integer> map = new HashMap();for (int i = 0; i < nums.length; i++) {if (map.containsKey(nums[i])) {return new int[]{i, map.get(nums[i])};}map.put(target - nums[i], i);}return null;}
思路
刚开始可能想到的是现将每一个数需要的补数 Target - nums[i] 全部放入 map 之后再找, 但其实可以放一个补数找一次 (找这个数是不是前面某个数的补数), 再进一步就是放第 i 个数之前先找是不是之前某个数的补数, 是的话直接返回答案, 不是再放入这个数的补数. 这样, 甚至直接满足了条件 “一个数不能算两次”.
效率
执行用时 2 ms, 在所有 Java 提交中击败了 99.61% 的用户内存消耗 39.8 MB, 在所有 Java 提交中击败了 5.06% 的用户
_
