解决方案

Java 代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
class Solution { public int[] twoSum(int[] nums, int target) { // 1. 将 nums 转为 value -> index 的 Map HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { map.put(nums[i], i); } // 2. 检查每个数据 num for (int i = 0; i < nums.length; i++) { // 如果 map 里 有 target - num int missing = target - nums[i]; if (map.containsKey(missing)) { // 并且 和当前的 index 不一致 int j = map.get(missing); if (i != j) { return new int[]{i, j}; } } } // 3. 这一行应该不会运行 return null; }}

Java Script 代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
var twoSum = function(nums, target) { // 1. 将 nums 转为 value -> index 的 Map let map = new Map(); nums.forEach((num, i) => { map.set(num, i); }); // 2. 检查每个数据 num let solution = []; nums.forEach((num, i) => { // 如果 map 里 有 target - num let missing = target - num; if (map.has(missing)) { // 并且 和当前的 index 不一致 let j = map.get(missing); if (i !== j) { solution = [i,]; } } }); return solution;};

Python 代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: # 1. 将 nums 转为 value -> index 的 dict d = dict() for i, v in enumerate(nums): d[v] = i # 2. 检查每个数据 num for i, v in enumerate(nums): # 如果 dict 里 有 target - num missing = target - v if missing in d: # 并且 和当前的 index 不一致 j = d[missing] if j != i: return [i, j]

ZZAX 微信公众

文档一更新,立刻告诉你