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

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

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

二分法 分别找到第一个大于等于k的元素,和第一个小于等于k的元素
public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        if(array.length==0){
            return 0;
        }
       int len=array.length;
       int left=0;
       int right=len-1;
        int mid=0;
       while(left<right){
            mid=left+(right-left)/2;
           if(array[mid]>=k){
               right=mid;
           }else if(array[mid]<k){
               left=mid+1;
           }
        }
        int i=0;
        if(array[left]==k){
             i=left;
        }else{
            return 0;
        }
        
        left=0;
        right=len-1;
        while(left<right){
            mid=left+(right-left+1)/2;
           if(array[mid]<=k){
               left=mid;
           }else if(array[mid]>k){
               right=mid-1;
           }
        }
        int j=0;
        if(array[left]==k){
             j=left;
        }else{
            return 0;
        }
        return j-i+1;
    }
}
全部评论

相关推荐

程序员牛肉:这一眼假啊,基本上都是骗人的,不然就涉及到职位贪腐了,就像之前华为的OD事件,看你运气好不好了
点赞 评论 收藏
分享
frutiger:逆天,我家就安阳的,这hr咋能说3k的,你送外卖不比这工资高得多?还说大厂来的6k,打发叫花子的呢?这hr是怎么做到说昧良心的话的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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