题解
这道题我做了很久,主要是利用acwing的二分模板,把模板的范围改为左闭右开,可以省掉很多特判。当没有找到解时,下标会移动到尾后位置。
思路就是:找到大于等于k的下标,再找到大于k的下标,两者相减就ok了。
C++ 代码
class Solution {
public:
int getNumberOfK(vector<int>& nums , int k) {
if(nums.empty()) return 0;
int l=0,r=nums.size();
while(l<r){
int mid=l+r>>1;
if(nums[mid]>=k) r=mid;
else l=mid+1;
}
int a1,a2;
a1=l;
l=0,r=nums.size();
while(l<r){
int mid=l+r>>1;
if(nums[mid]>k) r=mid;
else l=mid+1;
}
a2=l;
return a2-a1;
}
};