剑指 Offer 11. 旋转数组的最小数字

class Solution {
    public int minArray(int[] numbers) {
        int n = numbers.length;
        if(n == 1) return numbers[0];
        if(n == 2) return Math.min(numbers[0],numbers[1]);
        for(int i = 1;i<numbers.length-1;i++){
            if(numbers[i]< numbers[i-1] && numbers[i] <= numbers[i+1]){
                return numbers[i];
            }
        }
        return Math.min(numbers[0],numbers[n-1]);
    }
}

方法二:二分法

public int minArray(int[] numbers) {
        int i = 0, j = numbers.length - 1;
        while (i < j) {
            int m = (i + j) / 2;
            if (numbers[m] > numbers[j]) i = m + 1;
            else if (numbers[m] < numbers[j]) j = m;
            else j--;
        }
        return numbers[i];
    }

我的前方是万里征途,星辰大海!!
原文地址:https://www.cnblogs.com/taoyuxin/p/13453180.html