33. 搜索旋转排序数组 二分法

 

时隔半年再次尝试这题,当时做的太复杂

 

二分法注意细节:

  1. 左右端点初始化时,右端点记得-1   l,r = 0, len(nums)-1

  2. 二分查找结束的判断条件,记得加等号    while  l <= r:

  3. mid 的 赋值  mid = l + (r-l)//2 或者  mid = (l+r) //2  

  4. 二分法的跳出条件: if nums[mid] == taget: return mid 

  5. 判断二分边的时候,记得取端点,加等号

    if  nums[0] <= target < nums[mid]

    if nums[ mid ] < target <= nums[-1]

    如果不加,端点就取不到

本题细节:  

  1. 需要将 nums[0] == nums[mid]  与  nums[0] < nums[target] 两种情况合并,因为mid取为左端点,一定不能忽略 nums[0] == nums[mid] 这种情况

 

 

 

posted @ 2020-05-14 15:52  ChevisZhang  阅读(101)  评论(0编辑  收藏  举报