力扣刷题167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组 - 力扣(LeetCode)
双指针,首先定义两个指针左指针l和右指针r,分别指向最左边和最右边,先求两个指针指向的数之和,因为数组已经按照非递减排序了,如果该和大于目标数,那么就让最右边的指针减一,否则让最左边的指针加一,直至找到目标数即可
public static int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
int l = 0;
int r = numbers.length - 1;
while (l < r) {
if (numbers[l] + numbers[r] == target) {
result[0] = l + 1;
result[1] = r + 1;
break;
} else if (numbers[l] + numbers[r] > target) {
r--;
} else if (numbers[l] + numbers[r] < target) {
l++;
}
}
return result;
}