class Solution:
def search(self, nums: List[int], target: int) -> int:
left,right=0,len(nums)-1
while left<=right:
mid = left+(right-left)//2
if nums[mid]==target:
return mid
elif nums[mid]<nums[right]:
if target>nums[mid] and target<=nums[right]:
left=mid+1
else:
right=mid-1
else:
if target>=nums[left] and target<nums[mid]:
right=mid-1
else:
left=mid+1
return -1
思路:
- 因为不管target落在哪个部分中,target都在有序数组里,所以可以使用二分法
- 大的if_else条件语句就是在判断target落在前有序数组中还是后有序数组中