๐ŸŒ•๐ŸŒ—ๅ‰‘ๆŒ‡ Offer 11. ๆ—‹่ฝฌๆ•ฐ็ป„็š„ๆœ€ๅฐๆ•ฐๅญ—

ๅžไฝ›็ซฅๅญ2022ๅนด10ๆœˆ10ๆ—ฅ
  • algorithm
  • Array
  • ไบŒๅˆ†
ๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ•๐ŸŒ—ๅ‰‘ๆŒ‡ Offer 11. ๆ—‹่ฝฌๆ•ฐ็ป„็š„ๆœ€ๅฐๆ•ฐๅญ—

้šพๅบฆ: ๐ŸŒ•๐ŸŒ—

้—ฎ้ข˜ๆ่ฟฐ

img_20.png


่งฃๆณ•

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);
        }
    }
}

่พ“ๅ‡บ

img_19.png

ไธŠๆฌก็ผ–่พ‘ไบŽ: 2022/10/10 ไธ‹ๅˆ8:43:48
่ดก็Œฎ่€…: liuxianzhishou