var twoSum = function (nums, target) { let map = new Map(); for (let i = 0; i < nums.length; i++) { if (map.has(target - nums[i])) { return [map.get(target - nums[i]), i]; } else { map.set(nums[i], i); } } return []; };
参考回答
1. 两数之和
前置知识
哈希表
思路
读完这个题,咱们反手先来个暴力题解。
public int[] twoSum(int[] nums, int target) { // 例行防御编程,养成习惯 if (nums == null || nums.length == 0) return new int[]{}; for (int i = 0; i < nums.length - 1; i++) for (int j = i + 1; j < nums.length; j++) if (nums[i] + nums[j] == target) return new int[]{i, j}; return new int[]{};}
public int[] twoSum(int[] nums, int target) { // 例行防御编程,养成习惯 if (nums == null || nums.length == 0) return new int[]{}; Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(nums[i])) return new int[]{map.get(nums[i]), i}; map.put(target - nums[i], i); } return new int[]{};}