两数之和:给定一个整数数组nums和一个整数目标值target,请你返回该数组中和为target的两个元素的下标 可以假设每种输入只会对应一个答案。但是,数组中同一个元素的下标在答案里不能重复出现。
代码如下:
function twoSum(nums, target) {
let obj = {}
for (let i = 0; i < nums.length; i++) {
const firstNum = nums[i]
const secondNum = target - firstNum
if (obj[firstNum]) {
/* 注意第一个元素的下标不要用indexOf()获取,
例如当nums=[3,3],target=6时,如果直接用indexOf()获取第一个数,
最后返回的两个数组元素的索引值会重复 */
let x = i
let y = nums.indexOf(secondNum)
return [x, y]
}
obj[secondNum] = true
}
}
//调用函数
console.log(twoSum([1, 2, 3, 4, 5, 6, 7], 13))
//得到两元素下标的数组:[6,5]
console.log(twoSum([3, 3], 6))
//得到两元素下标的数组:[1,0]