1. 程式人生 > >Leetcode 153. Find Minimum in Rotated Sorted Array

Leetcode 153. Find Minimum in Rotated Sorted Array

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e.,  [0,1,2,4,5,6,7] might become  [4,5,6,7,0,1,2]).

Find the minimum element.

You may assume no duplicate exists in the array.

Example 1:

Input: [3,4,5,1,2] 
Output: 1

Example 2:

Input: [4,5,6,7,0,1,2]
Output: 0

Answer:

class Solution(object):
    def binary(self,nums,start,end):
        if end-start<=1:
            return min(nums[start],nums[end])
        
        mid=(start+end)/2
        if nums[mid]>nums[end]:
            return self.binary(nums,mid+1,end)
        if nums[mid]<nums[end]:
            if nums[mid]<nums[mid-1]:
                return nums[mid]
            return self.binary(nums,start,mid)
    def findMin(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        l=len(nums)
        
        start=0
        end=l-1
        return self.binary(nums,start,end)
        
            

binary search