题目描述
统计一个数字在排序数组中出现的次数。
思路:先使用二分查找算法查找数组中是否有这个数字,没有返回0,有则继续判断出现了几次
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.size() == 0)
return 0;
int left = 0;
int right = data.size() - 1;
int indexOfK = -1;
//二分查找
while(left <= right){
int mid = (left + right) / 2;
if(data[mid] < k)
left = mid + 1;
else if(data[mid] > k)
right = mid - 1;
else{
indexOfK = mid;
break;
}
}
int count = 0;
if(indexOfK == -1)
return 0;
else{
count++;
for(int i = indexOfK - 1; i >= 0; i--){
if(data[i] == k)
count++;
else
break;
}
for(int i = indexOfK + 1; i < data.size(); i++){
if(data[i] == k)
count++;
else
break;
}
}
return count;
}
};