一、题目
二、思路
二分法
先用二分法找到数据k,然后往前和往后再查找等于k的,统计个数
三、代码
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.empty())
{
return 0;
}
int left=0;
int right=data.size()-1;
int mid=left+(right-left)/2;
int Count=0;
while(left<=right)
{
mid=left+(right-left)/2;
if(data[mid]==k)
{
int res=mid-1;
Count++;
mid++;
while(mid<=data.size()-1)
{
if(data[mid]==k)
{
Count++;
mid++;
}
else
{
break;
}
}
while(res>=0)
{
if(data[res]==k)
{
Count++;
res--;
}
else
{
break;
}
}
return Count;
}
else if(data[mid]>k)
{
right=mid-1;
}
else
{
left=mid+1;
}
}
return Count;
}
};