153. 寻找旋转排序数组中的最小值-二分法

注意:

  1. python中二分法取中点方法: mid = l + ( r - l ) // 2

  2. 递归的时候,一定要包括中点

    a) 旋转点在左边,则递归 (l,mid)

    b) 旋转点在右边,则递归(mid+1,r)

  3. 递归的过程中,一定要设置返回值

    res = helper(l,r)

    不能直接,那是更新最大最小值,或者append 

    helper(l,r) 

 注意普通二分查找,是不包括中点的

        def search_normal(l,r):

            while l<=r:
                mid = l+(r-l)//2
                print('normal')
                print(l,mid,r)
                if nums[mid] == target :
                    return mid
                elif nums[mid]<target:
                    l = mid+1
                elif nums[mid]>target:
                    r = mid-1
                else:
                    return mid
            return -1

  

原文地址:https://www.cnblogs.com/ChevisZhang/p/13488823.html