https://leetcode.com/problems/search-in-rotated-sorted-array/
1.寻找初始的index 也就是rotate的情况
2. 在顺序的列表里 二分查找
如果没有 返回-1 如果有 再减去startindex
注意 减去startindex可能会出现负数的情况 在加一个len(list)再取len(list)余
class Solution:
# @param {integer[]} nums
# @param {integer} target
# @return {integer}
def search(self, nums, target):
#找startindex并且把nums编程普通顺序的
startindex=0
for i in range(len(nums)-1):
if nums[i]>nums[i+1]:
startindex=len(nums)-1-i
nums=nums[i+1:]+nums[:i+1]
s=0
e=len(nums)-1
#过大过小
if target<nums[0] or target>nums[-1]:
return -1
#和首尾相同
if target==nums[-1] :
return len(nums)-1-startindex
if target==nums[0] :
return (len(nums)-startindex)%len(nums)
二分查找
while s!=e-1:
if nums[(e+s)/2]>target:
e=(e+s)/2
elif nums[(e+s)/2]<target:
s=(e+s)/2
else:
return ((e+s)/2-startindex+len(nums))%len(nums)
return -1