#Suppose a sorted array is rotated at some pivot unknown to you beforehand.
#(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
#You are given a target value to search. If found in the array return its index, otherwise return -1.
#You may assume no duplicate exists in the array.
class Solution(object):
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left=0
right=len(nums)-1
while left <= right:
mid = (left+right)/2
if target == nums[mid]:
return mid
if nums[mid] >= nums[left]:
if target < nums[mid] and target >= nums[left]:
right=mid-1
else:
left=mid+1
elif nums[mid] < nums[right]:
if target > nums[mid] and target <= nums[right]:
left=mid+1
else:
right=mid-1
return -1