LeetCode 167. Two Sum II - Input array is sorted [Easy]

题目来源:https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/

题目难度:Easy

解答1[Java]:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 这个值。