leetcode 第 1 题:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

你可以按任意顺序返回答案。


来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/two-sum

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
29
30
31
32
33
/**

 * @param {number[]nums

 * @param {numbertarget

 * @return {number[]}

 */

var twoSum = function (nums, target) {
let re = [];

let temp = []; //目标哈希表

try {
nums.forEach((a, i) => {
let b = target - a; //和转差,目标数值

if (temp[a] !== undefined) {
//在哈希表中找到目标值

re = [temp[a], i];

throw Error('');
}

temp[b] = i; //目标数组
});
} catch (e) {}

return re;
};

重点

  • 维护一个哈希表
  • 用抛出异常来中断 forEach

编辑文章✏