题目
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:
# @param {integer[]} nums
# @param {integer} target
# @return {integer}
def search(self, nums, target):
def binary_search(nums,l,r,target):
if l > r:
return -1
m = l + (r-l)/2
if nums[m] == target:
return m
elif nums[m] > target:
return binary_search(nums,l,m-1,target)
else:
return binary_search(nums,m+1,r,target)
i = 0
while i < len(nums) -1:
if nums[i+1] < nums[i]:
break
i += 1
if nums[0] == target:
return 0
elif nums[0] > target:
return binary_search(nums,i+1,len(nums)-1,target)
else:
return binary_search(nums,0,i,target)
网友评论