题解 | #二分查找-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

全部评论

相关推荐

Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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