81. Search in Rotated Sorted Array II
Medium
Input: nums = [2,5,6,0,0,1,2], target = 0
Output: trueInput: nums = [2,5,6,0,0,1,2], target = 3
Output: falseLast updated
Input: nums = [2,5,6,0,0,1,2], target = 0
Output: trueInput: nums = [2,5,6,0,0,1,2], target = 3
Output: falseLast updated
class Solution:
def search(self, nums: List[int], target: int) -> bool:
pivot = self.pivot(nums, target)
return False if pivot == -1 else True
def pivot(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums)-1
while left <= right:
mid = left + (right-left) // 2
while left < mid and nums[left] == nums[mid]: # Point 1
left += 1
if nums[mid] == target:
return mid
elif nums[left] <= nums[mid]:
if nums[left] <= target <= nums[mid]:
right = mid - 1
else:
left = mid + 1
else:
if nums[mid] <= target <= nums[right]:
left = mid + 1
else:
print(mid, right)
right = mid - 1
return -1