前言
一、题目
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
二、题解
这道题其实可以设置两个指针,左指针left,右指针right;
在大循环里设置left<right;
1、如果nuns[left]+nums[right]==target,则输出nums[left],nums[right];
2、如果nums[left]+nums[right]<target,因为是递增数组,则left++;
3、如果nums[left]+nums[right]>target,则right–;
找到任意一对就输出,停止循环;
三、代码
public int[] twoSum(int[] nums, int target) {
int left= 0;
int right = nums.length-1;
int[] arr = new int[2];
while (left < right) {
while(left<right&&nums[left]+nums[right]<target)left++;
while(left<right&&nums[left]+nums[right]>target)right--;
if (nums[left] + nums[right] == target) {
arr[0] = nums[left];
arr[1] = nums[right];
break;
}
}
return arr;
}