题目描述:
标签:数组 双指针 二分查找
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
代码:
思路分析:
1、因为数组有序,所以定义双指针left,right分别指向数组头和尾
2、处理以下三种情况:
①nums[left] + nums[right] = target,返回即可
②nums[left] + nums[right] < target,left++
③nums[left] + nums[right] > target,right--
class Solution {
public int[] twoSum(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while(left < right){
if(nums[left] + nums[right] == target){
return new int[]{nums[left], nums[right]};
}else if(nums[left] + nums[right] < target){
left++;
}else{
right--;
}
}
return new int[2];
}
}