题目
基本思路
如果没有记错,这是剑指 offer上的题目,我自己写了一个,但是分类分的逻辑实在有问题,还是参照了一下别人的。
实现代码
left, right = 0, len(nums) - 1
while left <= right :
mid = (left+right) // 2
if nums[mid] == target : return True
if nums[mid] == nums[left] : left += 1
elif nums[mid] > nums[left] :
if nums[mid] > target and nums[left] <= target :
right = mid - 1
else : left = mid + 1
else :
if nums[mid] < target and nums[right] >= target :
left = mid + 1
else : right = mid - 1
return False