169 - 153 寻找旋转排序数组最小值 - 006

题目

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

请找出其中最小的元素。

你可以假设数组中不存在重复元素。

示例 1:

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

示例 2:

输入: [4,5,6,7,0,1,2] 输出: 0

解答

二分法

class Solution:
    def findMin(self, nums: List[int]) -> int:
        if not nums:
            return 0
        left = 0
        right = len(nums)-1
        while left < right:
            mid = left + ((right-left) >> 1)
            if nums[right] < nums[mid]:
                left = mid+1
            else:
                right = mid
        return nums[left]

Runtime: 28 ms, faster than 99.79% of Python3 online submissions for Find Minimum in Rotated Sorted Array.

Memory Usage: 12.8 MB, less than 100.00% of Python3 online submissions for Find Minimum in Rotated Sorted Array.

Runtime: 0 ms, faster than 100.00% of Go online submissions for Find Minimum in Rotated Sorted Array.

Memory Usage: 2.5 MB, less than 100.00% of Go online submissions for Find Minimum in Rotated Sorted Array.

Runtime: 56 ms, faster than 65.35% of JavaScript online submissions for Find Minimum in Rotated Sorted Array.

Memory Usage: 33.8 MB, less than 75.00% of JavaScript online submissions for Find Minimum in Rotated Sorted Array.

分治

https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/solution/er-fen-fa-fen-zhi-fa-python-dai-ma-java-dai-ma-by-/

Runtime: 36 ms, faster than 94.37% of Python3 online submissions for Find Minimum in Rotated Sorted Array.

Memory Usage: 13 MB, less than 100.00% of Python3 online submissions for Find Minimum in Rotated Sorted Array.

Last updated

Was this helpful?