public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; ++i) { if (map.containsKey(target - nums[i])) { return new int[]{map.get(target - nums[i]), i}; } map.put(nums[i], i); } return new int[0]; }
哈希表在判断 某个数 是否存在时可以认为有常数级的时间复杂度,通过第四行判断 目标数 是否存在于当前HashMap,与第六行添加操作,可以循环一次得出结果。