首页 > 编程语言 > 详细

剑指 Offer 53 - I. 在排序数组中查找数字 I

时间:2020-07-26 23:00:25      阅读:59      评论:0      收藏:0      [点我收藏+]

题目

统计一个数字在排序数组中出现的次数。
示例:
输入: nums = [5,7,7,8,8,10], target = 8 输出: 2

解题思路

使用二分法查找,找到与目标数字相等的值的最左侧位置,然后向后移动,记录目标数字的次数。

代码

   public int search(int[] nums, int target) {
    if (nums==null||nums.length==0){
        return 0;
    }
    int left = 0;
    int right = nums.length-1;
    int count = 0;//记录target出现的次数
    while (left<right){
        int mid=left+((right-left)>>1);//防溢出

        if (nums[mid]>=target){
            right=mid;
        }else if (nums[mid]<target){
            left=mid+1;
        }
    }
    while (left<nums.length&&nums[left++]==target){
        count++;
    }
    return count;
}

剑指 Offer 53 - I. 在排序数组中查找数字 I

原文:https://www.cnblogs.com/ghlz/p/13381996.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!