159. Find Minimum in Rotated Sorted Array

題目

https://www.lintcode.com/problem/find-minimum-in-rotated-sorted-array/description?_from=ladder&&fromId=2

實現

  1. 以最後一個元素作爲 target(其實第一個元素也是可以的,但是如果是 [1, 2, 3] 的情況下結果會不對)
  2. 如果 nums[mid] > target 說明在前半段,left = mid
  3. 否則說明當前在後半段,right = mid
  4. 不斷收斂到中間的位置,最後返回 nums[left]nums[right] 裏面最小的那個就是最小值了

代碼

class Solution:
    """
    @param nums: a rotated sorted array
    @return: the minimum number in the array
    """
    def findMin(self, nums):
        if nums is None or len(nums) == 0:
            return -float("inf")

        target = nums[len(nums) - 1]

        left, right = 0, len(nums) - 1
        while left + 1 < right:
            mid = left + (right - left) // 2
            if nums[mid] > target:
                left = mid
            else:
                right = mid

        return min(nums[left], nums[right])

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章