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

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

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

相关推荐

11-13 12:02
门头沟学院 Java
点赞 评论 收藏
分享
11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务