题解 | #二分查找-II#

二分查找-II

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

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 如果目标值存在返回下标,否则返回 -1
# @param nums int整型一维数组
# @param target int整型
# @return int整型
#
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        # write code here

        if not nums:
            return -1

        low = 0
        high = len(nums) - 1
        mid = (high + low) // 2
        while True:
            if high == low and nums[high] != target:
                return -1
            # else:
            #    return nums[high]
            elif mid == high or mid == low:
                if nums[low] == target:
                    return low
                elif nums[high] == target:
                    return high
                else:
                    return -1

            if target < nums[mid]:
                high = mid
            elif target > nums[mid]:
                low = mid
            elif target == nums[mid]:
                #在找到mid后需要,找最左边的等于Mid的值的并mid!=0
                while nums[mid-1]==nums[mid] and mid!=0:
                    mid-=1
                return mid
                #return mid
            mid = (high + low) // 2

全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务