給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值奸绷,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。
給定 nums = [2, 7, 11, 15], target = 9
因?yàn)?nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
1.簡(jiǎn)單粗暴,時(shí)間復(fù)雜度什么的都不要考慮
var twoSum = function(nums, target) {
var newArr = [];
for(let i = 0; i<nums.length; i++){
for(let j = i+1; j<nums.length; j++){
if(nums[i] + nums[j] === target){
newArr.push(i,j);
}
}
}
return newArr;
}
2.排序豌蟋,先將數(shù)組排序土居,將數(shù)組從前向后排序,時(shí)間復(fù)雜度(nlogn)
while(nums[i] + nums[j] != target){
if(nums[i] + nums[j] > target){
j--;
}else{
i++;
}
}
完整代碼
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++;
}
}
console.log(i);
console.log(j);
i = temp.indexOf(nums[i]);
console.log(i);
j = temp.lastIndexOf(nums[j]);
var index = new Array(i, j);
console.log(temp);
console.log(nums);
console.log(index);
index = index.sort(function(a,b){return a-b;});
return index;
};
3.終極版娶耍,免姿,,采用數(shù)組下標(biāo)榕酒。
var twoSum = function(nums, target) {
var temp = [];
for (var i = 0; i < nums.length; i++) {
var cur = nums[i];
if (temp[target - cur] !== undefined) {
return [temp[target - cur], i];
}
temp[cur] = i;
}
return [];
};