JS练习题-两数之和

134 阅读1分钟

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

样例

输入 [3,3] 6 => [0,1]

1.粗暴解法

 let nums = [3, 6, 4, 5, 6, 7], target = 9
 function getIndex(nums, target) {
    for (let i = 0; i < nums.length; i++) {
        var diff = target - nums[i]
        for (let j = i + 1; j < nums.length; j++) {  // 避免i与j一样
            if (nums[j] === diff)
                return [i, j]
        }
    }
}
console.log(getIndex(nums, target))  // [0,  1]
  1. 使用indexOf查找
for (let i = 0; i < nums.length; i++) {
    var diff = target - nums[i]
    const j = nums.indexOf( diff )
    if( j != i && j != -1 ){
        return [i, j]
    }
}
// 【0,1】
  1. lastIndexOf从字符串尾端开始查找
for (let i = 0; i < nums.length; i++) {
    var diff = target - nums[i]
    const j = nums.lastIndexOf( diff )
    if( j != i && j != -1 ){
        return [i, j]
    }
}
// 【0,4】