算法思路:保存到一个临时数组后,排序,然后从中间断开,一个从0开始,另一个从len/2开始判断相加后是否相等。
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
var i,j,k,len = nums.length;
var number_tmp = nums.join(',').split(',').map(function(num){
return Number(num);
});
number_tmp.sort(function(a,b){
return a-b;
})
for(i=0;i<len;i++){
if(number_tmp[i] == target/2){
k=i;
break;
}
if(number_tmp[i] > target/2){
k = i-1;
break;
}
}
for(i=0;i<=k;i++){
for(j=k+1;j<len;j++){
if(number_tmp[i]+number_tmp[j] == target){
if(number_tmp[i] == number_tmp[j]){
i = numbers.indexOf(numbers_tmp[i]);
j = numbers.indexOf(numbers_tmp[i])+1;
}
else{
i = numbers.indexOf(numbers_tmp[i]);
j = numbers.indexOf(numbers_tmp[j]);
}
return [Math.min(i,j),Math.max(i,j)];
}
}
}
};