33. Search in Rotated Sorted Array
难度:Medium
class Solution:
def search(self, nums: List[int], target: int) -> int:
n = len(nums)
left = -1
right = n
while left + 1 < right:
mid = (left + right) >> 1
if nums[mid] == target:
return mid
if nums[mid] >= target:
if nums[left+1] > target and nums[mid] >= nums[left+1]:
left = mid
else:
right = mid
else:
if nums[right-1] < target and nums[mid] <= nums[right-1]:
right = mid
else:
left = mid
if right>=0 and right<n and nums[right]==target:
return right
else:
return -1