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

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

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @param k int整型 
     * @return int整型
     */
    public int GetNumberOfK (int[] nums, int k) {
        // [start, end]
        // nums[start] >= k
        // nums[end] <= k => (> k) - 1 => (>= (k+1)) - 1
        int start = lowerBound(nums, k); 
        if(start == nums.length || nums[start] != k) return 0;
        int end = lowerBound(nums, k+1) - 1;
        return end - start + 1;
    }
    
    int lowerBound(int[] nums, int t) {
        int l = -1, r = nums.length; // (l, r)
        while(l + 1 < r) {
            int mid = l + (r - l) / 2;
            if(nums[mid] < t) {
                l = mid;
            } else {
                r = mid;
            }
        }
        return r;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务