统计一个数字在排序数组中出现的次数。
一个数字在排序数组中的分布一定是连续的,题目其实是一个在排序数组中查找数字的意思,我使用二分查找
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int length=data.size();
if(length==0) return 0;
return getnumberofk(data,0,length-1,k);
}
int getnumberofk(vector<int>data,int start,int end,int k){
int count=0;
int middle=start+(end-start)/2;
if(data[start]>k||data[end]return 0;
if(data[start]==k){
for(int i=start;i<=end&&data[i]==k;i++){
count++;
}
return count;
}
if(data[end]==k){
for(int i=end;i>=start&&data[i]==k;i--)
count++;
return count;
}
return getnumberofk(data,start,middle,k)+getnumberofk(data,middle+1,end,k);
}
};