【二分搜索】寻找旋转排序数组中的最小值
思路:
二分搜索,若遇到中间值大于右值,就把指针往右移动,否则往左移动。
要注意的点:
不能搜索到左右两个指针重叠了才停下来,所以每次更新左值和右值的时候,要用mid更新,而不是mid+1或mid-1。
Python实现:
class Solution: """ @param nums: a rotated sorted array @return: the minimum number in the array """ def findMin(self, nums): # write your code here start, end = 0, len(nums) - 1 while start < end - 1: mid = (start + end) // 2 if nums[mid] > nums[end]: start, end = mid, end else: start, end = start, mid print(nums[start]) print(nums[end]) return min(nums[start], nums[end])