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

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

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

怎么我的二分那么***

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        int n = array.length;
        if(n == 0){
           return 0;
        }
        int count = 0;
        int l = binarySearch(array,k);
        if(l != -1){
            count = 1;
        }
        while(l > 0){
            if(array[--l] == k){
                count++;
            }
        }
        int r = binarySearch(array,k);
        while(r < n-1){
            if(array[++r] == k){
                count++;
            }
        }
        return count;
    }
    public int binarySearch(int[] arr,int k){
        int left = 0,right = arr.length-1;
        while(left <= right){
            int mid = left + (right-left)/2;
            if(k == arr[mid]){
                return mid;
            }else if(k > arr[mid]){
                left = mid+1;
            }else{
                right = mid-1;
            }
        }
        return -1;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
11-15 19:28
已编辑
蚌埠坦克学院 硬件开发
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务