给你一个升序排列的整数数组 nums ,和一个整数 target 。
假设按照升序排序的数组在预先未知的某个点上进行了旋转。(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。
1.二分是在有序数组中的,这题要么左边有序要么右边有序
class Solution:
def search(self, nums: List[int], target: int) -> int:
if not nums:return -1
left=0
right=len(nums)-1
while left<=right:
mid=left+(right-left)//2
if nums[mid]==target:return mid
if nums[mid]>=nums[left]:
if nums[left]<=target<nums[mid]:right=mid-1
else:left=mid+1
else:
if nums[mid]<target<=nums[right]:left=mid+1
else:right=mid-1
return -1