解
二分查找
- 找到第二个有序数组的起始索引
- 对两个有序数组进行二分查找
class Solution:
def search(self, nums: List[int], target: int) -> bool:
# 找第二个有序数组的起始索引
k = 0
while k < len(nums) - 1 and nums[k] <= nums[k + 1]:
k += 1
k += 1
return self.binary_search(nums[:k], target) or self.binary_search(nums[k:], target)
def binary_search(self, nums, target):
l = 0
r = len(nums) - 1
while l <= r:
mid = (l + r) // 2
if nums[mid] == target:
return True
elif nums[mid] > target:
r = mid - 1
else:
l = mid + 1
return False