logo头像
Snippet 博客主题

【Leetcode 81】Search in Rotated Sorted ArrayII

难度: 中等(Medium)

题目

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.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)

评论系统未开启,无法评论!