二分法解决有序数组问题
找出缺失的数字
public int missingNumber(int[] nums) {
int left=0,right = nums.length-1;
while(left<right){
int mid = (left+right)/2;
if(nums[mid]!=mid) right=mid;
else left=mid+1;
}
return nums[left]==left?left+1:left;
}
找出重复的数字
int left = 0,right = nums.length-1;
int count = 0;
while(left<right){
int mid = (left+right)/2;
if(nums[mid]>=target) right=mid;
else left=mid+1;
}
while(left<nums.length&&nums[left++]==target) count++;
return count;