剑指 Offer 57. 和为s的两个数字
解题思路
有序数组直接无脑二分搜索,但本题并不能算标准的二分搜索,因为没用上mid,可以理解为双指针嘛
代码
class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums.length==0){
return new int[]{};
}
int n=nums.length;
int left=0;
int right=n-1;
while(left<=right){
//不可以自己加自己,所以left==right的时候就要跳出循环
if(left==right){
break;
}
int sum=nums[left]+nums[right];
if(sum==target){
return new int[]{nums[left],nums[right]};
}else if(sum>target){
right--;
}else if(sum<target){
left++;
}
}
return new int[]{};
}
}