33. 搜索旋转排序数组(记考试中出现的错误)

    技术2022-07-11  100

    33. 搜索旋转排序数组

    class Solution: def search(self, nums: List[int], target: int) -> int: if not nums: return -1 # if target<nums[0]: # start=0 # end=len(nums)-1 # while start<=end: # mid=(start+end)//2 # if target <nums[start] and nums[mid]>=nums[start]: # start=mid+1 # else: # if target>nums[mid]: # start=mid+1 # elif target<nums[mid]: # end=mid-1 # else: # return mid # elif target>nums[0]: # start=0 # end=len(nums)-1 # while start<=end: # mid=(start+end)//2 # if target >nums[start] and nums[mid]<=nums[start]: # if mid==start: # start+=1 # else: # end=mid-1 # # end=mid-1 # else: # if target>nums[mid]: # start=mid+1 # elif target<nums[mid]: # end=mid+1 # else: # return mid # elif target==nums[0]: # return 0 # return -1 start=0 end=len(nums)-1 while start<=end: mid=(start+end)//2 if target==nums[start]: return start if target <nums[start] and nums[mid]>=nums[start]: start=mid+1 elif target >nums[start] and nums[mid]<=nums[start]: if mid==start: start+=1 else: end=mid-1 # end=mid-1 else: if target>nums[mid]: start=mid+1 elif target<nums[mid]: end=mid-1 else: return mid return -1 上面被注释掉的憨憨代码就是考试中写的,只考虑了一下即start==0得时候,后面得没考虑,这属实太憨了,记录一下避免以后犯同样错误,考虑问题要再全面一些!
    Processed: 0.010, SQL: 9