leetcode-01 TwoSum
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
刚看到题目就想到了嵌套for循环,但是性能太差,不通过,代码如下
var twoSum = function(nums, target) {
for(var i = 0; i < nums.length - 1; i++) {
for(var j = i + 1; j < nums.length; j++) {
if(nums[i] + nums[j] === target) {
return new Array(i, j);
}
}
}
};
优化如下
var twoSum = function(nums, target) {
var temp = nums.slice(0);
nums = nums.sort(function(a, b) {return a - b;));
var i = 0;
var j = nums.length - 1;
while(nums[i] + nums[j] != target) {
if(nums[i] + nums[j] > target) {
j--;
}else {
i++;
}
}
i = temp.indexOf(nums[i]);
j = temp.lastIndexOf(nums[j]);
return new Array(i, j);
};