33_Search in Rotated Sorted Array
Input: nums = [4,5,6,7,0,1,2], target = 0
Output: 4Input: nums = [4,5,6,7,0,1,2], target = 3
Output: -1Solution
def search(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left, right = 0, len(nums)-1
while left <= right:
mid = left + (right - left)//2
if nums[mid] == target:
return mid
elif nums[left] <= nums[mid]:
# left half must be sorted
# test if target is in left half
if nums[left] <= target < nums[mid]:
# keep left half
right = mid - 1
else:
# keep right half
left = mid + 1
else:
# right half must be sorted
# test if target is in right half
if nums[mid] < target <= nums[right]:
# keep right half
left = mid + 1
else:
# keep left half
right = mid - 1
return -1Last updated