题目描述
统计一个数字在排序数组中出现的次数。
**方法1:**循环遍历,一个一个比较
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int num=0;
for(auto i=0;i<data.size();i++)
{
if(data[i]==k)
num++;
}
return num;
}
};
**方法2:**基于二分查找法
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.size()==1&&data[0]==k)
return 1;
else if(data.size()==1&&data[0]!=k)
return 0;
int num=0;
int low,high,mid;
low=1;
high=data.size();
while(low<high)
{
mid=(low+high)/2;
if(k<data[mid])
high=mid-1;
else if(k>data[mid])
low=mid+1;
else//找到,分别往前后遍历
{
num++;
int i=mid;
int j=mid;
while(data[i+1]==k)
{
i++;
num++;
}
while(data[j-1]==k)
{
j--;
num++;
}
break;
}
}
return num;
}
};