Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?Would this affect the run-time complexity? How and why?
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Write a function to determine if a given target is in the array.
The array may contain duplicates.
Subscribe to see which companies asked this question
import bisect
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: bool
"""
# find point
pivot = None
for i in range(len(nums)-1):
if nums[i]>nums[i+1]:
pivot = i+1
break
nums = nums[pivot:]+nums[:pivot]
idx = bisect.bisect_left(nums, target)
if idx<len(nums) and nums[idx] == target:
return True
return False