力扣34

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int x = left(nums, target);
        if (x == -1) {
            return new int[] { -1, -1 };
        }else{
            return new int[]{x,right(nums,target)};
        }
    }

    public int left(int[] nums, int target) {
        int i = 0, j = nums.length - 1;
        int flag = -1;
        while (i <= j) {
            int m = (i + j) >>> 1;
            if (target < nums[m]) {
                j = m - 1;
            } else if (target > nums[m]) {
                i = m + 1;
            } else {
                flag = m;
                j = m - 1;
            }
        }
        return flag;
    }

    public int right(int[] nums, int target) {
        int i = 0, j = nums.length - 1;
        int flag = -1;
        while (i <= j) {
            int m = (i + j) >>> 1;
            if (target < nums[m]) {
                j = m - 1;
            } else if (target > nums[m]) {
                i = m + 1;
            } else {
                flag = m;
                i = m + 1;
            }
        }
        return flag;
    }
}

 

posted @ 2024-08-27 20:29  张碧晨  阅读(9)  评论(0)    收藏  举报