leetcode 每日一题 81. 搜索旋转排序数组 II
二分法
思路:
参考33.搜索螺旋排序数组。这里由于数组中有重复元素,可能出现nums[l] == nums[r]的情况影响二分法的判断,将l+1直到nums[l]!=nums[r]再进行区间二分判断即可。
代码:
class Solution: def search(self, nums: List[int], target: int) -> bool: if not nums: return False l,r = 0,len(nums)-1 while l<=r: mid = (l+r)//2 if nums[mid] == target: return True if nums[l] == nums[r]: l = l+1 continue; if nums[mid] >= nums[l]: if nums[l]<=target<nums[mid]: r = mid - 1 else: l = mid + 1 else: if nums[mid]<target<=nums[r]: l = mid + 1 else: r = mid - 1 return False