题解 | #在转动过的有序数组中寻找目标值#

在转动过的有序数组中寻找目标值

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
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务