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

272 阅读1分钟

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

输入:nums = [2,7,11,15], target = 9  
输出:[0,1]  
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]

示例2:

输入: nums = [3,3], target = 6
输出: [0,1]

示例3:

输入: nums = [2, 7, 11, 3, 15, 6], target = 9
输出:[0,1,3,5]

解法1:

var twoSum = function(nums, target) {
    let arr=[],j=1;
    console.log(j);
    for(let i=0;i<nums.length;i++){
        console.log(i);
        while(j<nums.length){
            console.log(i,j);
            if(nums[i]+nums[j]==target){
                arr.push(i)
                arr.push(j)
            }
            j++
        }
        if(j==nums.length){
            j=1
        }
    }
    return [...new Set(arr)]
};

解法2:

var twoSum = function(nums, target) {
    let arr=[];
    for(let i in nums){
        for(let j=1;j<nums.length;j++){
            if(nums[i]+nums[j]==target){
                arr.push(Number(i))
                arr.push(j)
            }
        }
    }
    return [...new Set(arr)]
}

解法3:

var twoSum = function (nums, target) {
    let arr = [];
    nums.findIndex((item, index) => {
        for (let j = 1; j < nums.length; j++) {
            if (nums[index] + nums[j] == target) {
                arr.push(Number(index))
                arr.push(j)
            }
        }
    })
    return [...new Set(arr)]
}

求更高逼格的解法