法1 暴力破解
var twoSum = function(numbers, target) {
var i,j;
for(i = 0; i < numbers.length; i++) {
for(j = 1; j < numbers.length; j++) {
if(i == j) {
continue;
}
if(numbers[i] + numbers[j] == target) {
break;
}
}
if(numbers[i] + numbers[j] == target) {
break; // break只能破解一重循环
}
}
return [i + 1, j + 1];
};
法2 利用升序
var twoSum = function(numbers, target) {
var i = 0, j = numbers.length - 1;
while(i < j){
if(numbers[i] + numbers[j] == target) {
break; // 等于,则得到结果
}
else if(numbers[i] + numbers[j] < target) {
i++; // 小于则:指向低处的指针向高处移动,两数和增加
}
else {
j--; // 大于则:指向高处的指针向低处移动,两数和减小
}
}
return [i + 1, j + 1];
};