剑指 Offer 53 - I. 在排序数组中查找数字 I
思路
二分法查找最右值(可能有多个,因此找最右边的)
然后查找target和target-1,返回的最右值差就是target的个数
代码
public int search(int[] nums, int target) {
return helper(nums,target)-helper(nums,target-1);
}
int helper(int[] nums, int target) {
int i=0,j=nums.length-1;
while(i<=j){
int m=i+(j-i)/2;
if(nums[m]<=target)i=m+1;
else j=m-1;
}
return j;
}