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] 这种情况