1.题目
2.题目意思
数组被旋转了,给你一个target
,返回在数组中的位置,否则,返回-1。
3.代码
class Solution:
def search(self, nums: List[int], target: int) -> int:
if len(nums) == 0:
return -1
l = 0
r = len(nums) - 1
while l < r:
mid = l + (r - l) // 2
if nums[mid] < nums[r]: # [mid, r]有序
if nums[mid] < target <= nums[r]:
l = mid + 1
else:
r = mid
else: # [l, mid]有序
if nums[l] <= target <= nums[mid]:
r = mid
else:
l = mid + 1
return -1 if nums[l] != target else l
思路:二分
基础题,旋转后的数组分为两部分,两部分都是有序数组。不断二分,看看二分后是左边的有序还是右边的有序,然后对target
进行查找
冲冲冲~