题解 | #在转动过的有序数组中寻找目标值#
在转动过的有序数组中寻找目标值
http://www.nowcoder.com/practice/7cd13986c79d4d3a8d928d490db5d707
找到数组中间,如果数组中间的数小于数组首位 那么左边有序,数组中间的数小于数组末尾 那么右边有序
继续二分即可
class Solution: def search(self , nums , target ): # write code here if not nums: return -1 l,r=0,len(nums)-1 while l<=r: mid=(l+r)//2 if nums[mid]==target: return mid if(nums[0]<=nums[mid]): if(target>=nums[0] and target<nums[mid]): r=mid-1 else: l=mid+1 else: if(target>nums[mid] and target<nums[len(nums)-1]): l=mid+1 else: r=mid-1 return -1