题目描述
统计一个数字在排序数组中出现的次数。
解析:有序,二分查找,找到k所在位置,在该位置前后再找等于k的数,用count记录个数
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.size()<=0) return 0;//数组为空
int i=0,j=data.size()-1,count=0,mid;
while(i<=j){
mid=(i+j)/2;
if(data[mid]<k) i=mid+1;
else if(data[mid]>k) j=mid-1;
else{
count++;
int p=mid-1,q=mid+1;
while(data[p]==k){count++;p--;}
while(data[q]==k){count++;q++;}
return count;
}
}
return 0;;
}
};