๐๐ๅๆ Offer 11. ๆ่ฝฌๆฐ็ป็ๆๅฐๆฐๅญ
2022ๅนด10ๆ10ๆฅ
- algorithm
๐๐ๅๆ Offer 11. ๆ่ฝฌๆฐ็ป็ๆๅฐๆฐๅญ
้พๅบฆ: ๐๐
้ฎ้ขๆ่ฟฐ

่งฃๆณ
class Solution {
    public int minArray(int[] numbers) {
        // ๆ่ทฏ๏ผ
        // ไบๅ
        int len = numbers.length;
        return mySol(numbers, 0, len - 1);
    }
    private int mySol(int[] numbers, int left, int right) {
        // ้ๅฝ็ปๆญขๆกไปถ
        if(left >= right) {
            return numbers[left];
        }
        if(left == right - 1) {
            return Math.min(numbers[left], numbers[right]);
        }
        // ่ณๅฐ 3 ไธชๅ
็ด 
        int mid = left + ((right - left) >> 1);
        if(numbers[mid] > numbers[left]) {
            // ๅทฆๅๅบ้ดๅๅบ
            if(numbers[right] <= numbers[left]) {
                // ๅจๅณๅๅบ้ด
                return mySol(numbers, mid, right);
            } else {
                return numbers[left];
            }
        } else if(numbers[mid] == numbers[left]) {
            // ๅทฆ็งปไธไธชๅไฝ
            return mySol(numbers, left + 1, right);
        } else {
            // [mid] < [left]
            return mySol(numbers, left, mid);
        }
    }
}
่พๅบ
