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

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

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

import java.util.*;


public class Solution {
    // 数字在升序数组中出现的次数
    // 思路:因为数组是升序排列的,所以只需要找到目标值的最左侧索引和最右侧索引就可以找到整个目标值出现的次数
    // 因为数组中全是整数,所以可以考虑用二分查找法找到k+0.5和k-0.5出现的位置,两者相减就是k出现的次数
    public int GetNumberOfK (int[] nums, int k) {
        // write code here
        return binarySearch(nums,k+0.5) - binarySearch(nums,k-0.5);
    }

    public int binarySearch(int[] nums, double k){
        int left = 0;
        int right = nums.length - 1;
        while(left <= right){
            int mid = (left + right) / 2;
            if(nums[mid] < k){
                left = mid + 1;
            }else if(nums[mid] > k){
                right = mid - 1;
            }
        }
        
        return left;
    }
}

全部评论

相关推荐

gelmanspar...:奖学金删掉,自我评价删掉,简历压缩一下,写一页
如果再来一次,你还会学机...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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