題目
給出一個遞增有序數組,以某個元素爲準旋轉,如[0,1,2,4,5,6,7]變成了[4,5,6,7,0,1,2]。另給出一個目標值,在這個數組中尋找,如果找到返回index,否則返回-1。數組中沒有重複元素,你的算法時間複雜度必須爲O(logn)。
Python題解
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
low, high = 0, len(nums) - 1
while low <= high:
mid = low + (high - low + 1) // 2
if nums[mid] == target:
return mid
if nums[low] <= nums[mid]:
if nums[low] <= target <= nums[mid]:
high = mid - 1
else:
low = mid + 1
else:
if nums[mid] <= target <= nums[high]:
low = mid + 1
else:
high = mid - 1
return -1