Leetcode033:搜索旋轉排序數組

今天是用ipad做的,明天整理一下。
class Solution:
def search(self, nums: List[int], target: int) -> int: if not nums: return -1 if len(nums) == 1: return 0 if nums[0]== target else -1 lo = 0 hi = len(nums) - 1 while lo <= hi : mid = (lo + hi)//2 if mid + 1 < len(nums) and nums[mid] > nums[mid+1]: break if nums[mid] < nums[-1]: hi = mid - 1 elif nums[mid] >= nums[0]: lo = mid + 1 if lo > hi: #沒有進行旋轉 lo = 0 hi = len(nums) - 1 else: if target >= nums[0]: lo = 0 hi = mid else: lo = mid + 1 hi = len(nums)-1 while lo <= hi: mid = (lo + hi) // 2 if nums[mid] ==target: return mid elif nums[mid] > target: hi = mid - 1 else: lo = mid + 1 return -1

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章