153. Find Minimum in Rotated Sorted Array
![17368230-024aaa7c41bc1734.png](https://i-blog.csdnimg.cn/blog_migrate/7f4c73ef5f3da2442e7d9ffb45e6ede1.webp?x-image-process=image/format,png)
153. Find Minimum in Rotated Sorted Array
- 没有重复的情况。当然要用二分查找,我永远也忘不了头条第一挂,竟然是这么简单的题没整明白。
class Solution(object):
def findMin(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 1:
return nums[0]
l, r = 0, len(nums) - 1
while l < r:
print(l,r)
mid = (l + r) >> 1
if nums[mid] < nums[r]: #右边有序
r = mid
else:
l= mid + 1
return nums[l]
- Find Minimum in Rotated Sorted Array II
考虑重复情况,最坏的O(n),但依然可以用二分查找。
class Solution(object):
def findMin(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) == 1:
return nums[0]
l, r = 0, len(nums) - 1
while l < r:
mid = (l + r) >> 1
if nums[mid] < nums[r]: #右边有序
r = mid
elif nums[mid] > nums[r]: #左边有序
l = mid + 1
else:
r -= 1
return nums[l]