统计一个数字在排序数组中出现的次数。
//基于二分查找进行计算
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.size() == 0)
{
return 0;
}
int len = data.size();
int first = 0;
int last = len - 1;
while(first >= 0 && first <= last)
{
//二分查找
int mid = (first + last)/2;
if(data[mid] == k)
{
if(data[mid - 1] == k)
{
last = mid;
}
else
{
//------------------------------------------------------//
//这个else里面是当找到第一个出现的k值时向后查找并计算出现几次k值;
int count = 0;
for(int i = mid; data[i] == k; i++)
{
count++;
}
return count;
//------------------------------------------------------//
}
}
else if(data[mid] < k)
{
first = mid + 1;
}
else
{
last = mid - 1;
}
}
return 0;
}
};