searchArray.py (928B)
1 # This was really quite hard. 2 class Solution: 3 def search(self, nums: List[int], target: int) -> int: 4 5 left = 0 6 right = len(nums) - 1 7 8 while left <= right: 9 10 center = ((right - left) // 2) + left 11 12 if nums[center] == target: 13 return center 14 15 # CENTER IS ON LEFT SIDE 16 if nums[0] <= nums[center]: 17 if target > nums[center]: 18 left = center + 1 19 else: 20 if target < nums[0]: 21 left = center + 1 22 else: 23 right = center - 1 24 else: 25 if target < nums[center]: 26 right = center - 1 27 else: 28 if target >= nums[0]: 29 right = center - 1 30 else: 31 left = center + 1 32 return -1