1 class Solution: 2 def findMin(self, nums: 'List[int]') -> int: 3 l = 0 4 h = len(nums)-1 5 while l < h: 6 m = l + (h-l) // 2 7 if nums[m] > nums[h]: 8 l = m + 1 9 else: 10 h = m 11 return nums[l]
40ms,13.1mb
二分查找的变种,感觉怪怪的。相较而言,还是下面的这种更容易理解吧:
1 class Solution: 2 def findMin(self, nums: 'List[int]') -> int: 3 base = nums[0] 4 for i in range(1,len(nums)): 5 if base > nums[i]: 6 return nums[i] 7 return base
40ms,13.4mb
至少从oj提供的testcase来看,效率是几乎一致的,当然理论上是有O(logN)与O(N)的区别的。