美文网首页
剑指 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