首页 > 编程语言 >[Python手撕]合并 K 个升序链表

[Python手撕]合并 K 个升序链表

时间:2024-09-17 15:34:59浏览次数:9  
标签:ListNode val Python self 链表 升序 return root1 root2

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:

        def merge(root1,root2):
            if not root1 and not root2:
                return None
            elif not root1:
                return root2
            elif not root2:
                return root1
            else:
                dummy = ListNode(-1)
                tail = dummy
                cur1 = root1
                cur2 = root2

                while cur1 and cur2:
                    if cur1.val <= cur2.val:
                        tail.next = cur1
                        cur1 = cur1.next
                        tail = tail.next
                        tail.next = None
                    else:
                        tail.next = cur2
                        cur2 = cur2.next
                        tail = tail.next
                        tail.next = None

                if cur1:
                    tail.next = cur1
                if cur2:
                    tail.next = cur2

                return dummy.next

        res = None
        for head in lists:
            res = merge(res,head)
        return res

标签:ListNode,val,Python,self,链表,升序,return,root1,root2
From: https://www.cnblogs.com/DCFV/p/18417208

相关文章

  • 【算法竞赛】链表
    链表的特点是用一组位于任意位置的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以不连续。链表是容易理解和操作的基本数据结构,它的操作有初始化、添加、遍历、插入、删除、查找、释放等。链表分为单向链表和双向链表,如图所示.链表的各节点首尾相接,......
  • leetCode2:两数相加(链表)
    题目:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。思路:遍历两个链表,逐位相加,还要加上进位结......
  • Leetcode 19.删除链表的倒数第第N个结点
    1.题目基本信息题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。地址:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/2.解题方法2.1.解题思路使用快慢指针2.2.解题步骤第一步,初始化快指针为head,慢指针指向一个哑结点,哑结点......
  • 用Python解决综合评价问题_模糊综合评价,决策树与灰色关联分析
    一:模糊综合评价模糊综合评价是一种有效的处理不确定性和模糊性的评价方法,特别是在人才评价等领域。它允许我们综合考虑多个评价指标,并给出一个综合的评价结果。以下是利用模糊综合评价对人才进行评价的步骤:确定评价指标:首先,我们需要确定用于评价人才的各种指标,例如专业技能......
  • python+flask计算机毕业设计基于微信小程序的综合旅游管理系统的设计与实现(程序+开题+
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,人们的生活方式和消费习惯正经历着深刻的变革。旅游作为现代人休闲娱乐的重要方式之一,其服务模式和体验需求......
  • python+flask计算机毕业设计健身房管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着现代人生活节奏的加快和健康意识的日益增强,健身房作为促进全民健身、提升生活质量的重要场所,其管理与服务效率成为了行业关注的焦点。......
  • python之模块和包的导入与使用,pip的使用(13)
    文章目录1、模块1.1模块的分类1.1.1内置模块1.1.2第三方模块(比较重要)1.1.3自定义模块1.2模块的导入1.2.1单个模块的导入1.2.2同时导入多个模块1.2.3模块导入规范1.2.4给导入的模块取别名1.2.5同时导入模块和名字1.2.6给导入的名字取别名扩展:导入模块中所有的......
  • Python中的逻辑运算符:解锁编程世界的隐形钥匙
    引言逻辑运算符是任何编程语言的基础组成部分之一,在Python中也不例外。它允许我们基于一个或多个布尔表达式的真假值来决定程序的行为。在日常开发工作中,逻辑运算符广泛应用于条件判断、循环控制等场合,是构建复杂逻辑不可或缺的一部分。掌握好逻辑运算符,不仅可以提高代码的......
  • Python中的“with”语句:解锁优雅资源管理的秘密
    引言在日常开发过程中,我们经常会遇到需要打开文件、建立网络连接或数据库会话的情况。传统的做法是手动打开资源,在使用完毕后记得关闭。但这种方法存在明显不足:一旦在使用过程中发生异常,很容易忘记关闭资源,导致内存泄漏等问题。而“with”语句提供了一种更安全、简洁的方式来管理......
  • Python中的魔法:探索自定义Context Manager的魅力
    引言在日常开发中,我们经常需要处理各种资源管理的问题。比如,打开一个文件后需要记得关闭;使用完数据库连接后需要释放等。如果这些操作处理不当,可能会导致内存泄漏或者其他资源浪费的问题。ContextManager的设计正是为了解决这些问题而生,它提供了一种自动化的资源管理方式。那么,如......