美文网首页
剑指 Offer 第53-1题:在排序数组中查找数字 I

剑指 Offer 第53-1题:在排序数组中查找数字 I

作者: 放开那个BUG | 来源:发表于2022-08-07 12:47 被阅读0次

    1、前言

    题目描述

    2、思路

    因为是有序数组,所以可以使用二分查找,找到相关数之后,然后往两边扩,这是最朴素的思路。

    3、代码

    class Solution {
        public int search(int[] nums, int target) {
            if(nums == null || nums.length == 0){
                return 0;
            }
    
            int left = 0, right = nums.length - 1;
            while(left <= right){
                int mid = (right + left) / 2;
                if(nums[mid] == target){
                    int size = 1, tl = mid - 1, tr = mid + 1;
                    while((tl >= 0 && nums[tl] == nums[mid]) || (tr < nums.length && nums[tr] == nums[mid])){
                        if(tl >= 0 && nums[tl] == nums[mid]){
                            tl--;
                            size++;
                        }
                        if(tr < nums.length && nums[tr] == nums[mid]){
                            tr++;
                            size++;
                        }
                    }
                    return size;
                }else if(nums[mid] > target){
                    right = mid - 1;
                }else{
                    left = mid + 1;
                }
            }
    
            return 0;
        }
    }
    

    相关文章

      网友评论

          本文标题:剑指 Offer 第53-1题:在排序数组中查找数字 I

          本文链接:https://www.haomeiwen.com/subject/mtobbrtx.html