language: C
// 先用二分法找到第一个,如果找不到,返回0个,找得到,再以此为起点左右计算数量
int search(int* nums, int numsSize, int target){
int low = 0,high = numsSize-1, count = 0,mid;
while(low<=high){
mid =(low +high)/2;
if(nums[mid]==target){
count++;
break;
}else if(nums[mid]>target){
high = mid-1;
}else{
low = mid +1;
}
}
if(count == 0)
return 0;
low = mid+1; //
mid--;
while((mid>=0)&&(nums[mid]==target)){
count++;
mid--;
}
while((low<numsSize)&&(nums[low]==target)){
count++;
low++;
}
return count;
}
原文:https://www.cnblogs.com/gallien/p/14323641.html