34. 在排序数组中查找元素的第一个和最后一个位置

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


给定了指定的值,使用left <= right;

    public int[] searchRange(int[] nums, int target) {

        int left = searchLeftRange(nums, target);
        if(left >= nums.length || nums[left] != target) {
            return new int[]{-1,-1};
        }
        int right = searchLeftRange(nums, target+1);
        return new int[]{left,right-1};
        

    }
    // 找target的左边界,如果没有就返回插入位置。
    public int searchLeftRange(int[] nums, int target) {
        int l = 0;
        int r = nums.length-1;
        while(l<=r) {
            int mid = l+(r-l)/2;
            if(nums[mid] == target) {
                r= mid-1;
            } else if(nums[mid] > target) {
                r= mid-1;
            } else {
                l = mid+1;
            }
        }
        return l; 

    }

posted @ 2022-03-02 18:18  一颗青菜  阅读(3)  评论(0)    收藏  举报