//由于两个函数的功能大体一样,而且没有什么大的区别,只有一点细微的差距
//一直想要把他们合并在一起,但是发现目前并没有找到什么好的方法
class Solution {
public:
int GetFirstList(vector<int> data, int k, int start, int end)
{
if(start>end)
return -1;
int mid=(start+end)/2;
if(data[mid]==k){
if((data[mid-1]!=k&&mid>0)||mid==0)
return mid;
else end=mid-1;
}
else if(data[mid]>k)
end = mid-1;
else start = mid+1;
return GetFirstList(data, k, start, end);
}
int GetLastList(vector<int> data, int k, int start, int end)
{
if(start>end)
return -1;
int mid=(start+end)/2;
if(data[mid]==k){
if((data[mid+1]!=k&&mid<end)||mid==end)
return mid;
else start=mid+1;
}
else if(data[mid]>k)
end = mid-1;
else start = mid+1;
return GetLastList(data, k, start, end);
}
int GetNumberOfK(vector<int> data ,int k) {
int len = data.size();
if(len<0)
return -1;
int count = 0;
int first = GetFirstList(data, k, 0, len-1);
int last = GetLastList(data, k,0, len-1);
if(first>-1&&last>-1)
count = last-first+1;
return count;
}
};数字在排序数组中的个数
最新推荐文章于 2022-10-19 21:52:28 发布
695

被折叠的 条评论
为什么被折叠?



