AcWing 67. 数字在排序数组中出现的次数
原题链接
简单
作者:
Hey_86
,
2024-03-13 16:32:11
,
所有人可见
,
阅读 11
#include<algorithm>
class Solution {
public:
int getNumberOfK(vector<int>& nums , int k) {
//方案一
// return count(nums.begin(),nums.end(),k);
// 方案二
if(find(nums.begin(),nums.end(),k)==nums.end()) return 0;
int l=0,r=nums.size()-1;
while(l<r){
int mid=l+r>>1;
if(nums[mid]>=k) r=mid;
else l=mid+1;
}
int ll=0,rr=nums.size()-1;
while(ll<rr){
int mid=ll+rr+1>>1;
if(nums[mid]<=k) ll=mid;
else rr=mid-1;
}
return rr-l+1;
//方案三
// auto l = lower_bound(nums.begin(), nums.end(), k);
// auto r = upper_bound(nums.begin(), nums.end(), k);
// return r - l;
}
};