标签:find sans and etc array ota before div family
Suppose a sorted array 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.
在任何一个sublist中,如果头元素大于尾元素,那么这个minimum一定在这个sublist中间的某一个位置。可以用二分法找到这个元素,复杂度是O(logN)。本题O(N)的算法也可以通过OJ,思路就是最简答的从头元素往后比,直到出现 nums[i] > nums[i+1]的情况,那么nums[i+1]就是Minimum element。
1 class Solution(object): 2 def findMin(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """ 7 n = len(nums) 8 left = 0 9 right = n-1 10 while left < right: 11 mid = (left+right)//2 12 if nums[mid] > nums[right]: 13 left = mid + 1 14 else: 15 right = mid 16 return nums[left] 17
以下引用来自: http://bangbingsyb.blogspot.com/2014/11/leecode-find-minimum-in-rotated-sorted.html
1 class Solution(object): 2 def findMin(self, nums): 3 """ 4 :type nums: List[int] 5 :rtype: int 6 """ 7 n = len(nums) 8 left = 0 9 right = n-1 10 while left < right: 11 mid = (left+right)//2 12 if nums[mid] > nums[right]: 13 left = mid + 1 14 elif nums[mid] < nums[right]: 15 right = mid 16 else: 17 right -= 1 18 19 return nums[left]
Leetcode Find Minimum in Rotated Sorted Array I and II
标签:find sans and etc array ota before div family
原文地址:http://www.cnblogs.com/lettuan/p/6185516.html