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

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

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;
       
    }
}

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

全部评论

相关推荐

机械打工仔:有说的你怀疑一下就行了,直接问也太实诚了
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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