【力扣】1. 两数之和

115 阅读1分钟

1.两数之和

题目描述

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。 

提示:

2 <= nums.length <= 104

-109 <= nums[i] <= 109

-109 <= target <= 109

只会存在一个有效答案

进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?

var twoSum = function(nums, target) {
    // 用来记录索引的数组
    let res = [];
    //暴力解法,两层循环,好理解,但是也太麻烦了~~
    for (let i = 0; i < nums.length; i++) {
        // 内层循环要从当前索引下一个开始计算
        for (let j = i + 1; j < nums.length; j++) {
            // 记录当前两个索引的对应的数字之和,与target做比较
            let sum = nums[i] + nums[j];
            if (sum == target) {
                res.push(i, j);
                return res;
            }
        }
    }
};
// 吐槽自己:代码已经很清楚了,还写注释就。。。。