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

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

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

看到大多数都是二分查找上下界,开始我的想法是:二分查找到某一个数等于k,然后从这个数开始分别往左和往右统计有多少个k,总是超时,嗯?好像没什么大问题啊?

于是换了一个思路,分别从头和从尾开始查找等于k的上下界,竟然过了。。。时间复杂度为O(n-m),空间复杂度O(1)。
public:
    int GetNumberOfK(vectordata ,int k) {
        int l = 0;
        int r = data.size()-1;
        while(l<=r) { if(data[l]<k>k){
                l++;
                r--;
            }
            else if(data[l]<k>k && data[l]>=k)
                r--;
            else break;
        }
        if(l>r) return 0;
        return r-l+1;
    }</k></k>


全部评论

相关推荐

点赞 评论 收藏
分享
jack_miller:杜:你不用我那你就用我的美赞臣
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务