题目来源: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
这个值。