LeetCode 153 [Find Minimum in Rotated Sorted Array]

原題

假設(shè)一個(gè)旋轉(zhuǎn)排序的數(shù)組其起始位置是未知的(比如0 1 2 4 5 6 7 可能變成是4 5 6 7 0 1 2)。
你需要找到其中最小的元素。
你可以假設(shè)數(shù)組中不存在重復(fù)的元素。

給出[4,5,6,7,0,1,2] 返回 0

解題思路

  • 如果極端情況數(shù)組旋轉(zhuǎn)了0次,即仍未升序數(shù)組,我們可以通過
if nums[mid] < nums[end]:
    end = mid

使得最后start = 0,end = 1,返回min(A[start], A[end])

  • 對(duì)于旋轉(zhuǎn)的情況,有可能出現(xiàn)
if nums[mid] > nums[end]:
    start = mid

最后也只需要比較一下A[start], A[end]

完整代碼

class Solution(object):
    def findMin(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
            
        start, end = 0, len(nums) - 1
        while start + 1 < end:
            mid = start + (end - start) / 2
            if nums[mid] > nums[end]:
                start = mid
            else:
                end = mid
        return min(nums[start], nums[end])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容