1. 程式人生 > 實用技巧 >CentOS7下安裝nginx並配置自啟動

CentOS7下安裝nginx並配置自啟動

LeetCode34 在排序陣列中查詢元素的第一個和最後一個位置

題目描述

樣例

演算法分析

  • 第一次二分找到 大於等於 target的最小值的位置,即查詢元素的第一個位置a

    • 開始位置,mid>=target
  • 第二次二分找到 小於等於 target的最大值的位置,即查詢元素的最後一個位置b

    • 最終位置, mid<=target

時間複雜度\(O(log(n))\)

Java程式碼

class Solution {
    public int[] searchRange(int[] nums, int target) {
        if(nums.length == 0) return new int[]{-1, -1};
        int n = nums.length;
        int l = 0;
        int r = n -1;

        while(l < r){
            int mid = l + r >> 1;
            if(nums[mid] >= target ) r = mid;
            else l = mid + 1;
        }

        int a = l;
        l = 0;
        r = n - 1;
        while(l < r){
            int mid = l + r + 1>> 1;
            if(nums[mid] <= target) l = mid;
            else r = mid - 1;
        }

        int b = l;
        if(nums[a] != target || nums[b] != target) return new int[]{-1, -1};
        return new int[]{a, b};
    }
}