您的位置:首页 > 其它

数字在排序数组中出现的次数

2015-12-10 21:52 393 查看
统计一个数字在排序数组中出现的次数。

class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int number=0;
int start=0;
int end=data.size()-1;

if(data.size()!=0){
int first=GetFirstK(data,k,start,end);
int last=GetLastK(data,k,start,end);

if(first>-1&&last>-1)
number=last-first+1;
}

return number;
}

int GetFirstK(vector<int> data ,int k,int start,int end){
if(start>end)
return -1;

int middleIndex=(start+end)/2;
int middleData=data[middleIndex];

if(middleData==k){
if((middleIndex>0&&data[middleIndex-1]!=k)||middleIndex==0)
return middleIndex;
else
end=middleIndex-1;
}
else if(middleData>k)
end=middleIndex-1;
else
start=middleIndex+1;

return GetFirstK(data,k,start,end);
}

int GetLastK(vector<int> data ,int k,int start,int end){
if(start>end)
return -1;
int middleIndex=(start+end)/2;
int middleData=data[middleIndex];

if(middleData==k){
if((middleIndex<data.size()-1&&data[middleIndex+1]!=k)||middleIndex==data.size()-1)
return middleIndex;
else
start=middleIndex+1;
}
else if(middleData<k)
start=middleIndex+1;
else
end=middleIndex-1;

return GetLastK(data,k,start,end);

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: