题目描述
统计一个数字在排序数组中出现的次数。
代码如下
//统计一个数字在排序数组中出现的次数
int Helper(const vector<int>& data,int lo, int hi, int k)
{
while(lo < hi)
{
int mid = (lo + hi) >> 1;
if(k < data[mid]) hi = mid;
else if(k > data[mid]) lo = mid + 1;
else return mid;
}
return -1;
}
//查找有序数组中某中元素出现的次数
int GetNumberOfKTest()
{
//采用二分查找会快一点
int Array[7] = {1,3,3,3,3,4,5};
vector<int> vecint;
for(int i = 0; i < 7; i++)
vecint.push_back(Array[i]);
int index = Helper(vecint,0,7,2);
if(index == -1) return 0;
int count = 0;
int tepindex = index;
while(index >= 0 && vecint[index--] == 3)
count++;
while(tepindex < vecint.size() && vecint[++tepindex] == 3)
count++;
return count;
}