【二分搜索】寻找旋转排序数组中的最小值

思路:

二分搜索,若遇到中间值大于右值,就把指针往右移动,否则往左移动。

要注意的点:

不能搜索到左右两个指针重叠了才停下来,所以每次更新左值和右值的时候,要用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])

 

posted @ 2020-04-13 15:24  アカツキ  阅读(101)  评论(0编辑  收藏  举报