题目描述
统计一个数字在排序数组中出现的次数。
思路
有序,二分查找,定位成功后,向前向后统计。
int GetNumberOfK(vector<int> a ,int k)
{
int n=a.size();
int l=0,r=n-1;
int p=-1,sum=0;
while(l<=r){
int mid=(l+r)/2;
if(a[mid]==k){
p=mid; break;
}
if(a[mid]>k) l=mid+1;
else r=mid-1;
}
if(p==-1) return 0;
else{ //统计
int q=p-1;
while(a[p]==k&&p<n){
p++;sum++;
}
while(a[q]==k&&q>=0){
q--;sum++;
}
}
return sum;
}