自己实现的lowerbound和upperbound
作者:
Songger | 来源:发表于
2019-04-01 21:16 被阅读0次class Solution {
private:
int lower_bound_mine(vector<int>& data, int k){
int begin = 0;
int end = data.size() - 1;
while(begin <= end){
int mid = (begin + end) / 2;
if(data[mid] == k && ((mid == begin) || data[mid - 1] < k)) return mid;
else if(data[mid] >= k) end = mid - 1;
else begin = mid + 1;
}
return begin; //this is important
}
int upper_bound_mine(vector<int>& data, int k){
int begin = 0;
int end = data.size() - 1;
while(begin <= end){
int mid = (begin + end) / 2;
if(data[mid] == k && ((mid == end) || data[mid + 1] > k)) return mid;
else if(data[mid] <= k) begin = mid + 1;
else end = mid - 1;
}
return end;
}
public:
int GetNumberOfK(vector<int> data ,int k) {
return upper_bound_mine(data, k) - lower_bound_mine(data, k) + 1;
}
};
本文标题:自己实现的lowerbound和upperbound
本文链接:https://www.haomeiwen.com/subject/lggbbqtx.html
网友评论