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

代码:

两次二分查找 一次找最后一个 一次找第一个

找第一个大于target的mid=(left+right)/2

找第一个小于target的mid=(left+right+1)/2

因为 /运算会自动向左取整  +1起到向右取整的作用

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int[] notfound = {-1,-1};
        int n = nums.length;
        if(n==0||targetnums[n-1]){
            return notfound;
        }
        int[] res = new int[2];
        int l=0,r=n-1;
        if(nums[n-1]==target){
            res[1]=n-1;
        }else{
            while(lnums[m]){
                    l=m;
                }else{
                    r=m-1;
                }
            }
            res[0]=r+1;
        }
        if(res[1]

你可能感兴趣的:(算法,数据结构,leetcode)