立扣题:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
分析:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
代码实现
这里我是用到了Map方法,Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
let nums = [2, 7, 11, 15],
target = 9;
function twoSum(nums, target) {
let map = new Map(); //声明一个新的Map对象
for (let i = 0; i < nums.length; i++) {
let a1 = nums[i];
let a2 = target - a1;
if (map.has(a2)) { //map.has是判断是否存在此数据
return [map.get(a2),i] //用get来获取map里面的数据
}else{
map.set(a1,i) //设置map数据
}
}
}
console.log(twoSum(nums,target)); //[0,1]
近期在刷立扣,有兴趣的小伙伴可以去尝试一下,很有意思!