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

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
  1. 上面被注释掉的憨憨代码就是考试中写的,只考虑了一下即start==0得时候,后面得没考虑,这属实太憨了,记录一下避免以后犯同样错误,考虑问题要再全面一些!

猜你喜欢

转载自blog.csdn.net/weixin_45569785/article/details/107069430
今日推荐