class Solution:
def search(self, nums: List[int], target: int) -> int:
if nums[0] > target: # target在数组后半有序部分
target += 10001
left, right = 0, len(nums) - 1
while left < right:
mid = (left + right) // 2
if nums[mid] < nums[0]: # 在后半有序部分
nums[mid] += 10001
if nums[mid] > target:
right = mid
elif nums[mid] == target:
return mid
else:
left = mid + 1
if target == nums[left] or target == nums[left] + 10001:
return left
return -1
33. 搜索旋转排序数组
最新推荐文章于 2024-08-09 08:31:03 发布