leetcode刷题_在排序数组中查找元素的第一个和最后一个位置

题目描述

在这里插入图片描述

Java解决方法

class Solution {
    
    
    public int[] searchRange(int[] nums, int target) {
    
    
        int[] ret = new int[2];
        int pos = search(nums,0,nums.length - 1,target);
        if(pos == -1 || (nums.length == 0))
        {
    
    
            ret[0] = -1;
            ret[1] = -1;
            return ret;
        }
        int st = pos;
        int en = pos;
        while(st >= 0 && nums[st] == target)
        {
    
    
            st--;
        }
        while(en <= nums.length - 1 && nums[en] == target)
        {
    
    
            en++;
        }
        ret[0] = ++st;
        ret[1] = --en;
        return ret;
    }

    private int search(int[] nums,int start,int end,int target)
    {
    
    
        if(start > end)
        {
    
    
            return -1;
        }
        int mid = (start + end) / 2;
        if(nums[mid] == target)
        {
    
    
            return mid;
        }
        else if(nums[mid] < target)
        {
    
    
            return search(nums,mid + 1,end,target);
        }
        else
        {
    
    
            return search(nums,start,mid - 1,target);
        }
    }
}

在这里插入图片描述

おすすめ

転載: blog.csdn.net/qq_42148307/article/details/120226836