给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
你可以按任意顺序返回答案。
----------------------------------
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
----------------------------------
/**
* @param {number[]} nums
* @param {number} target
* @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