您的位置:首页 > Web前端

剑指offer-数字在排序数组中出现的次数

2018-04-12 04:31 357 查看
二分

int GetNumberOfK(vector<int> data ,int k) {
int l=0,r=data.size()-1;
int m=(l+r)/2;
bool isfind=false;
int pos=-1;
while(!isfind && l<=r)
{
if(k>data[m])
{
l=m+1;
m=(l+r)/2;
}
else if(k<data[m])
{
r=m-1;
m=(l+r)/2;
}
else
{
isfind=true;
pos=m;
}
}
if (pos==-1) return 0;
int sum=1,index=pos+1;
while(index<data.size() && data[index]==data[pos])
{
index++;
sum++;
}
index=pos-1;
while(index>=0 && data[index]==data[pos])
{
index--;
sum++;
}
return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: