zl程序教程

您现在的位置是:首页 >  后端

当前栏目

LC 数组与字符串 - 两数之和

数组 字符串 两数 LC
2023-09-11 14:19:17 时间

题目

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

解题

这道题其实不难,一般人想到的就是暴力破解法,写两层循环做判断就可以了;

但是我想的是能尽量花少的步骤和时间去做,具体想法是这样的:遍历一次,每次计算差值,然后判断差值在不在当前数组,且不是当前值,比如:数组为【2,3,7,9】,目标是9,遍历第一个值是2,用目标值9-2=7,然后查看7在不在数组中,且下标不是当前值的下标0,如果运气好第一个值,第一次就找到了,就算运气不好也只用遍历一次。

源码:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for(let i=0;i<nums.length;i++){
        let a = nums.indexOf(target - nums[i]);
        if(a > -1 && a != i){
            return [i,a];
            break;
        }
    }
};

结果

在这里插入图片描述
在这里插入图片描述
结果虽然不错,但是还有更厉害的算法,继续加油!