题目描述
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
实例
解题思路
设置两个指针,先判断右指针的起始位置(其值应该略大于target)
然后移动左右两个指针判断即可,分为三种情况。
代码
class Solution {
public int[] twoSum(int[] nums, int target) {
int r = nums.length-1;
for(int i = 0; i < nums.length; i++) {
if(nums[i] > target) {
r = i;
break;
}
}
int l = 0;
while(l < r) {
if(nums[l] + nums[r] == target) break;
if(nums[l] + nums[r] > target) r--;
else l++;
}
return new int[] { nums[l], nums[r] };
}
}