logo

leetcode第一题

leetcode第一题

下决心开始刷题了,现在leetcode也支持javascript了,准备每天做一道(如果能做出来的话),把我的答案也贴在这里,如果有更好的解法拜托指正。

第一题 Two Sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

第一题说的是,给一个数组和一个target,如果数组中有两个数加起来等于这个target就返回这两个数的序号。

我的想法是遍历,因为也想不出更好的。首先相邻两个数相加和target比较,然后相隔1个数的两个数相加再比较,依此类推。

var twoSum = function(nums, target) {
for(var j = 0; j < nums.length; j++){
    for(var i = 0; i < nums.length; i++){
        if(i+1+j > nums.length){
            break;
        }else if(nums[i] + nums[i+1+j] == target){
            return [i,i+1+j];
        }
    }
}
};

这里还做了一个判断,就是i+1+j会不会比数组的位数多,这是因为我不知道j应该小于多少好,所以就用判断的方式把不对的部分break掉了。