劍指offer 旋轉陣列的最小數字

Inequality-Sign發表於2018-03-26

題目描述

把一個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非遞減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大小為0,請返回0。

順序查詢當然是可以的,但那樣時間複雜度就是o(n),為了使得時間達到o(logn)就要用二分查詢了


 public int minNumberInRotateArray(int [] array) {
        int low = 0;
        int high = array.length - 1;
        while (low < high) {
            int mid = low + (high - low) / 2;
            if(array[mid] > array[high]) low = mid+1;
            else high = mid;
        }
        return array[low];
    }

相關文章