classSolution(object):defsearch(self,nums,target):""" :type nums: List[int] :type target: int :rtype: bool """ifnotnums:returnFalsestart,end=0,len(nums)-1whilestart<=end:mid=(start+end)/2iftarget==nums[mid]:returnTruewhilestart<midandnums[start]==nums[mid]:# tricky partstart+=1ifnums[mid]<nums[start]:# right part is from small to largeifnums[mid]<target<=nums[end]:# normal sequencestart=mid+1else:end=mid-1else:# left part is from small to largeifnums[start]<=target<nums[mid]:# normal sequenceend=mid-1else:start=mid+1returnFalseif__name__=="__main__":answer=Solution()printanswer.search([1,3,1,1,1],3)