leetcode34_排序数组第一个和最后一个

public int[] searchRange(int[] nums, int target) {
    int[] ans = {-1,-1};
    if(nums.length == 0) return ans;
    else if(nums.length == 1) {
        if(nums[0] == target) {
            ans[0] = 0;
            ans[1] = 0;
            return ans;
        }
    }
    if (nums.length < 2) return ans;
    int l = 0, r = nums.length-1;
    while (l < r) {
        int mid = l + r>> 1;
        // 找到第一个大于等于target的数字
        if(nums[mid] >= target) r = mid;
        else l = mid + 1;
    }
    if(nums[l] == target) ans[0] = l;
    l = 0;
    r = nums.length ;
    while (l < r) {
        int mid = l + r >> 1;
        // 找到第一个大于target的数字
        if(nums[mid] > target) r = mid;
        else l= mid + 1;
    }
    System.out.println(l + ":" + r);
    l --;
    if(0 <= l && l < nums.length) {
        if(nums[l] == target) ans[1] = l;
    }
    return ans;
}
posted @ 2022-02-16 22:51  明卿册  阅读(21)  评论(0编辑  收藏  举报