LeetCode-劍指Offer-11-旋轉數組的最小數字


題意描述:

把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如,數組 [3,4,5,1,2] 爲 [1,2,3,4,5] 的一個旋轉,該數組的最小值爲1。


示例:

示例一:

輸入:[3,4,5,1,2]
輸出:1

示例二:

輸入:[2,2,2,0,1]
輸出:0

解題思路:

Alice: 面試的時候還有這麼簡單的題目嗎 ?
Bob: 是啊,簡直就是送分題,直接找第一個下降的點就是答案啊。
Alice: 對,在處理一下沒有旋轉的那種,一直增長的情況就好了,直接設置初始值是數組第一個元素就好了。
Bob: 😎😎


代碼:

Python 方法一: 遍歷, 找到第一個下降的點就是答案。

class Solution:
    def minArray(self, numbers: List[int]) -> int:

        if len(numbers) == 0:
            return -1
        else:
            ret = numbers[0]
            for x in range(len(numbers) - 1):
                if numbers[x] > numbers[x+1]:
                    ret = numbers[x+1]
                    break
            return ret 

Java 方法一: lc的測試樣例中並沒有 數組爲空的情況,而且 break 語句也可以去掉。

class Solution {
    public int minArray(int[] numbers) {
        int ret = numbers[0];
        for(int i=0; i<numbers.length-1; ++i){
            if(numbers[i] > numbers[i+1]){
                ret = numbers[i+1];
                break;
            }
        }
        return ret;
    }
}

易錯點:

🤷‍♂️

總結:

  • 有時候打字快也是有好處的。

發佈了169 篇原創文章 · 獲贊 39 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章