Solve in Python:
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

(i.e., [0,0,1,2,2,5,6] might become [2,5,6,0,0,1,2]).

You are given a target value to search. If found in the array return true, otherwise return false.

Example 1:


Input: nums = [2,5,6,0,0,1,2], target = 0
Output: true


Example 2:


Input: nums = [2,5,6,0,0,1,2], target = 3
Output: false

Follow up:


       This is a follow up problem to Search in Rotated Sorted Array, where nums may contain duplicates.
       Would this affect the run-time complexity? How and why?
class Solution:
     def search(self, nums, target):
         """
         :type nums: List[int]
         :type target: int
         :rtype: bool
         """
         low = 0
         high = len(nums)-1
         while low<=high:
             mid = (low+high)//2
             if nums[mid]==target:
                 return True
             if nums[low]<nums[mid]:
                 if nums[low]<=target and nums[mid]>target:
                     high = mid-1
                 else:
                     low= mid+1
             elif nums[low]>nums[mid]:
                 if nums[mid]<target and nums[high]>=target:
                     low= mid+1
                 else:
                     high = mid -1
             else:
                 low+=1
         return False