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得時候,後面得沒考慮,這屬實太憨了,記錄一下避免以後犯同樣錯誤,考慮問題要再全面一些!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章