目录
一、题目
二、思路
由于数组是 非递减顺序排列 的,利用该先验知识,可以设置两个指针在数组的起始和末尾,相向前进,与暴力枚举相比可以加快寻找速度。
三、代码
java
class Solution {
public int[] twoSum(int[] numbers, int target) {
int n = numbers.length;
int i = 0, j = n - 1;
int sum;
while (i < j) {
sum = numbers[i] + numbers[j];
if (sum > target) {
j--;
} else if (sum < target) {
i++;
} else {
break;
}
}
return new int[]{i + 1, j + 1};// 注意题目中数组下标是从 1 开始的
}
}