最初と最後でソートされた配列における第三十四タイトルの要素を見つけます20200408--

class Solution {
    public int[] searchRange(int[] nums, int target) {
        if(nums == null){
            return new int[]{-1,-1};
        }
        int first = find(true,nums,target);
        int last = find(false,nums,target);

        return new int[]{first,last};    

    }
    public int find(boolean bool,int[] nums,int target){
        int begin = 0 ;
        int end = nums.length-1;
        while(begin<=end){
            int mid = begin+(end-begin)/2;
            if(nums[mid] > target){
                end = mid-1;
            }else if(nums[mid] < target){
                begin = mid+1;
            }else{
                if(bool){
                    if(mid>0 && nums[mid] == nums[mid-1]){
                        end = mid-1;
                    }else{
                        return mid;
                    }
                }else{
                    if(mid <nums.length-1 && nums[mid] == nums[mid+1]){
                        begin = mid+1;
                    }else{
                        return mid;
                    }
                }
            }
        }
        return -1;
    }
}

ここに画像を挿入説明
最初、私は時間の最初の要素を見つけた時、私はとても複雑で高に費やす時間がない、戻ったり前進してきました。

公開された955元の記事 ウォン称賛43 ビュー80000 +

おすすめ

転載: blog.csdn.net/qq_36344771/article/details/105392447