Link: https://leetcode.com/problems/search-in-rotated-sorted-array/
Content:
Method:
Algorithm:
一个ascending array rotated 后可以分为两端,mid 的位置有两种可能,根据mid 的位置,target 有四种可能。
Code:
def search(nums, target):
left = 0
right = len(nums)-1
while left <= right: #caution: =
mid = (left + right)//2
if nums[mid] == target:
return mid
#2 situations
if nums[mid] >= nums[left]:
if nums[left] <= target and target < nums[mid]: #caution: =
right = mid - 1
else:
left = mid + 1
elif nums[mid] < nums[right]:
if nums[mid] < target and target <= nums[right]: #caution: =
left = mid + 1
else:
right = mid - 1
return -1
易出错的点: nums[mid] 与target 之间的等号