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

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。要求时间复杂度为logn。

主要思想的话就是寻找大于等于target值在数组中出现的位置,之后再寻找target+1出现的位置,进行判断即可,题解如下:
class Solution {
    public int[] searchRange(int[] nums, int target) {
        int l = searchBinary(nums,target);
        int r = searchBinary(nums,target + 1);
        if(l == nums.length || nums[l] != target){
            return new int[]{-1,-1};
        }
        return new int[]{l,r - 1};
    }
    public int searchBinary(int[] nums,int target){
        int len = nums.length;
        int l = 0;
        int r = len;
        while(l < r){
            int mid = (l + r) >> 1;
            if(nums[mid] >= target){
                r = mid;
            }else{
                l = mid + 1;
            }
        }
        return l;
    }
}