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.
Example
Example 1:
Input: [4, 5, 1, 2, 3] and target=1,
Output: 2.
Example 2:
Input: [4, 5, 1, 2, 3] and target=0,
Output: -1.
Challenge
O(logN) time
classSolution:"""
@param A: an integer rotated sorted array
@param target: an integer to be searched
@return: an integer
"""defsearch(self, A, target):# write your code here
left =0
right =len(A)-1while left <= right:
mid =int((left+right)/2)if A[mid]== target:return mid
elif A[mid]> target:if target <= A[right]and A[mid]>A[right]:
left = mid +1else:
right = mid -1else:if A[left]> A[right]and target>A[right]:
right = mid -1else:
left = mid +1return-1