数字在升序数组中出现的次数(upper_bound & lower_bound)

数字在升序数组中出现的次数

http://www.nowcoder.com/questionTerminal/70610bf967994b22bb1c26f9ae901fa2

/*

返回迭代器 对应数组下标要-vt.begin()
upper_bound(vt.begin(),vt.end(), value)返回第一个大于查找数字下标

lower_bound()返回第一个大于等于查找数的下标


*/

int GetNumberOfK(vector<int> nums ,int target) {
        return upper_bound(nums.begin(), nums.end(), target) - lower_bound(nums.begin(), nums.end(), target);
}
class Solution {
public:
    int GetNumberOfK(vector<int> nums ,int target) {
        int lbound = 0, rbound = 0;
        //  lower_bound()
        int low = 0, high = nums.size();
        while (low < high) {
            int mid = low + (high - low) / 2;
            nums[mid] < target? low = mid + 1:high = mid;
        }
        lbound = low;
        //  upper_bound() 返回第一个大于查找数字下标         
            low = 0, high = nums.size();
        while (low < high) {
           int mid = low + (high - low) / 2;
           nums[mid] <= target? low = mid + 1: high = mid;
        }
        rbound = low;
        return rbound - lbound;
    }
};

全部评论

相关推荐

牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:30
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务