题解 | #【模板】二分查找、堆#

【模板】堆

https://www.nowcoder.com/practice/13f61c8c92404f5ea5d6fa4c692869fb

二分查找

class Solution:
    # 二分查找, 必须是升序数组。
    def search(self , nums: List[int], target: int) -> int:
        # write code here
        l = 0
        r = len(nums) - 1
        # 从数组首尾开始, 直到两者相遇
        while l <= r:
            # 求中间值
            tgt_ind = l +int((r-l)/2)
            # 检查中间值是否等于目标值
            if nums[tgt_ind] == target:
                return tgt_ind
            # 中间值大于目标值, 表示在左区间
            if nums[tgt_ind] > target:
                r = tgt_ind - 1
            else: # 中间值小于于目标值, 表示在右区间
                l = tgt_ind + 1
        return -1

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务