刷题笔记
167. Two Sum II - Input array is sorted
题目
Given an array of integers numbers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
Return the indices of the two numbers (1-indexed) as an integer array answer of size 2, where 1 <= answer[0] < answer[1] <= numbers.length.
You may assume that each input would have exactly one solution and you may not use the same element twice.
思路
- 两侧夹逼就完事了。
代码实现
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] indices = new int[2];
if (nums.length == 0 || nums.length == 1) return indices;
int left = 0, right = nums.length - 1;
while (left < right) {
if (target == nums[left] + nums[right]) {
indices[0] = left + 1;
indices[1] = right + 1;
break;
} else if (nums[left] + nums[right] > target) {
right--;
} else {
left++;
}
}
return indices;
}
}