题目描述
- 有序序列二分
- 先对左端点进行二分
- 再对右端点二分
最后得到两个端点,直接相减+1,得到区间个数
class Solution {
public:
int getNumberOfK(vector<int>& nums , int k) {
if(nums.empty()) return 0;
int l=0,r=nums.size()-1;
while(l<r){
int mid=l+r>>1;
if(nums[mid]<k) l=mid+1;
else r=mid;
}
if(nums[l]!=k) return 0;
int left = l;
l=0,r=nums.size()-1;
while(l<r){
int mid = l+r+1>>1;
if(nums[mid]<=k) l=mid;
else r=mid-1;
}
return r-left+1;
}
};
标签:二分,nums,--,mid,int,端点,排序
From: https://www.cnblogs.com/solutide/p/17860404.html