LeeCode34在排序数组中查找元素的第一个和最后一个位置(Java)(二分查找)

题目链接:LeeCode34在排序数组中查找元素的第一个和最后一个位置
题目描述:在这里插入图片描述
二分法,直接找出想找的元素位置向前后找,直到找到两边坐标返回

public static int[] searchRange(int[] nums, int target) {
    
    
        int l=0,r=nums.length-1;
        int ans=-1;
        while (l<=r){
    
    
        	//中间坐标
            int mid=l+(r-l)/2;
            int middata=nums[mid];
            if(middata>target){
    
    
                r=mid-1;
            }else if(middata<target){
    
    
                l=mid+1;
            }else{
    
    
                ans=mid;
                break;
            }
        }
        //没找到
        if (ans == -1) return new int[]{
    
    -1,-1};
        l=ans-1;
        r=ans+1;
        while (l>=0&&nums[l] == target) l--;
        while (r< nums.length&&nums[r] == target) r++;
        return new int[]{
    
    l+1,r-1};
    }

猜你喜欢

转载自blog.csdn.net/weixin_43590593/article/details/112545718