思路:
找到上下边界然后相减;
注意:
用左边界找,左边界先找到开始,再找到结尾;
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int rbound, lround = 0;
int l = 0, r = data.size()-1;
while(l<=r){
int mid = (l+r)/2;
if(data[mid]<k){
l = mid+1;
}
else r = mid-1;
}
lround = l;
l = 0, r = data.size()-1;
while(l<=r){
int mid = (l+r)/2;
if(data[mid]<=k){
l = mid+1;
}
else r = mid-1;
}
rbound = l;
return rbound- lround;
}
};
时间复杂度logN;
空间复杂的O(1);