题解 | #二分查找-II#

二分查找-II

http://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395

两次二分查找,一次查是target,一次查不是target

    def search(self , nums: List[int], target: int) -> int:
        # write code here
        l,r = 0,len(nums)-1
        while l <= r:
            mid1 = (l+r)//2
            if nums[mid1] == target:
                while l <= mid1:
                    mid2 = (l+mid1)//2
                    if nums[mid2] == target:
                        mid1 = mid2 - 1
                    else:
                        l = mid2 + 1
                return l
            elif nums[mid1] < target:
                l = mid1 + 1
            elif nums[mid1] > target:
                r = mid1 - 1
        return -1
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务