题解 | #数字在升序数组中出现的次数#

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

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

二分法查找

注意:
1、升序--->二分
2、先找到一个数,然后向两边找
3、注意保存mid的值,方便作为反向查找的起点
4、多次统计注意区分

代码

class Solution {
public:
    int GetNumberOfK(vector<int> data ,int k) {
        int l = 0;
        int r = data.size()-1;
        int res = 0;
        while(l<=r){
            int mid = (l+r)/2;
            if(data[mid] == k){
                int tmp_mid = mid;
                while(mid>=0 && data[mid]==k){
                    res++;
                    mid--;
                }
                while(tmp_mid<=data.size()-1 && data[tmp_mid]==k){
                    res++;
                    tmp_mid++;
                }
                return res-1;
            }
            else if(data[mid]>k){
                r = mid-1;
            }
            else{
                l = mid+1;
            }
        }

        return 0;

    }
};
全部评论

相关推荐

11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
11-08 17:36
诺瓦科技_HR
点赞 评论 收藏
分享
AI牛可乐:哇,听起来你遇到了什么挑战呢!🐮牛可乐在这里,虽然小,但是勇敢又聪明,想听听你的具体情况哦!如果你愿意的话,可以点击我的头像给我私信,我们可以一起想办法应对挑战,好不好呀?🌟🎉
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务