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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-21 17:59
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
07-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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