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

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

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

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        if(array.length == 0){
            return 0;
        }
        // 有序数组,想到用二分法来解决找数据
        int left = 0 , right = array.length - 1 , mid = 0;
        while(left < right){
            mid = left + (right - left)/2;
            if(array[mid] > k){
                right = mid;
            }else if(array[mid] < k){
                left = mid + 1;
            }else{
                break;
            }
        }
        int count = 0;
        if(array[mid] != k){
            return count;
        }
        // 左边
        for(int i = mid;i >= 0; i-- ){
            if(array[i] == k){
                count++;
            }
        }
        // 右边
        for(int i = mid; i < array.length; i++){
            if(array[i] == k){
                count++;
            }
        }
        return count-1;
       
    }
}

思路:二分法找到具体在哪,然后连续找左右两边的个数计数。

全部评论

相关推荐

Edgestr:没项目地址就干脆把那一栏删了呗
点赞 评论 收藏
分享
SHC2:春招先狠狠投递,然后你看看能不能申请香港新加坡的一年制master,花不了多少钱,或者现在赶紧去刷一段实习。HR专业考研没必要
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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