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)的区别的。

posted on 2019-02-25 22:05  Sempron2800+  阅读(119)  评论(0编辑  收藏  举报