Search in Rotate Array
Medium; Binary Search;
Last updated
Medium; Binary Search;
Last updated
class Solution:
def search(self, nums: List[int], target: int) -> int:
#
#
#binary search
# move right to mid
# case1: target > a[mid] >= a[0]
# case2: a[0] > target > a[mid]
# case3: target>= a[0] > a[mid]
#
#
#
if not nums:
return -1
left, right = 0 , len(nums)-1
while left < right-1:
mid = (left + right)//2
if (target < nums[mid] and target >=nums[0]) or (nums[mid]>target and nums[mid]<nums[0]) or (target>=nums[0] and nums[0]>nums[mid]):
right = mid
else:
left = mid
if nums[left] == target:
return left
if nums[right] == target:
return right
return -1