class Solution:
def search(self, nums: List[int], target: int) -> int:
if not nums:return -1
length=len(nums)
left,right=0,len(nums)-1
pointer=0
while left<right:
pointer=left+(right-left)//2
if nums[pointer]>nums[right]:
left=pointer+1
else:
right=pointer
t=left
left=0
right=len(nums)-1
# if target==t:
# return t
if target==nums[right]:
return right
elif target<nums[right]:
left=t
else:
right=t-1
while left<=right:
pointer=left+(right-left)//2
if nums[pointer]==target:
return pointer
elif nums[pointer]>target:
#减少判断是否能减少时间?
right=pointer-1
else:
left=pointer+1
return -1
排序一类的题目,学习了二分法,还是蛮好用的还有,还有debug真的是神器啊,分分钟解决问题,不过也不能太依赖,很多错误都是由于没有加nums[]导致的