统计一个数字在升序数组中出现的次数
统计一个数字在升序数组中出现的次数
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.empty())
return 0;
int bejin=0,end=data.size()-1,m=-1,num=0,n=-1;
int i=0;
while(bejin<=end)
{
i=(bejin+end)/2;
if(data[i]>k)
end=i-1;
else if(data[i]<k)
bejin=i+1;
else if(data[i]==k)
{
m=i;
break;
}
}
if(m>=0)
{
n=m;
while(data[m]==k)
{
num++;
m++;
}
while(data[n-1]==k)
{
num++;
n--;
}
}
return num;
}
};1.在冒泡排序中,需要注意的是,可以从0,也可以吃1开始进行计算()区别在与取数组下标的时候就不要-1了,直接用变量即可
2.大神解法:利用二分法定位k+0.5和k-0.5的位置,然后两位置相减。
3.int mid = (e - s)/2 + s;注意二分法中取中间值要这么写,不然会有bug;

