欢迎访问原文所在博客:https://52heartz.top/articles/leetcode-167-two-sum-ii-input-array-is-sorted/
解答1[Java]:
class Solution {
public int[] twoSum(int[] numbers, int target) {
int i = 0;
int j = numbers.length - 1;
int[] result = new int[2];
for (; i < j;) {
if (numbers[i] + numbers[j] == target) {
result[0] = i + 1;
result[1] = j + 1;
return result;
} else if (numbers[i] + numbers[j] < target) {
i++;
} else {
j--;
}
}
return result;
}
}
思路
一头一尾两个指针不断向中间靠拢。
解答2
思路
利用传入的数组已经有序的特点。
从头开始选一个值 i
,然后在剩下的长度中进行二分搜索 target-i
这个值。