当前位置: 首页 > java >正文

Leetcode-.21合并两个有序链表

image.png

迭代法 (Iteration)

迭代法是最直观、空间效率最高的方法。它的核心思想是创建一个新的链表,然后同时遍历 list1list2,逐个比较节点的值,将较小的节点依次链接到新链表的末尾。

关键技巧:哨兵节点 (Sentinel Node)

为了简化在空链表上添加第一个节点的操作,我们通常会创建一个“哨兵节点”(也叫虚拟头节点 dummy)。它不存储任何有效数据,只是作为新链表的临时头部。我们同时用一个 tail 指针来追踪新链表的最后一个节点,方便我们进行添加操作。

算法步骤:

  1. 初始化

    • 创建一个哨兵节点 dummy = ListNode()

    • 创建一个指针 tail = dummytail 将永远指向新链表的尾部。

  2. 主循环:当 list1list2 都不为空时,进行循环:

    • 比较 list1.vallist2.val 的大小。

    • 如果 list1.val 更小,就将 list1 的当前节点链接到 tail.next,然后将 list1 指针后移一位。

    • 否则,将 list2 的当前节点链接到 tail.next,然后将 list2 指针后移一位。

    • 无论链接了哪个节点,都必须将 tail 指针后移一位 (tail = tail.next),以确保它始终指向新链表的末尾。

  3. 处理剩余部分:循环结束后,list1list2 最多只有一个还不为空。我们直接将这个非空的链表剩余的所有部分链接到 tail.next 即可。

  4. 返回结果:合并后的新链表的真正头节点是哨兵节点的下一个节点,即 dummy.next

# Definition for singly-linked list.# class ListNode:#     def __init__(self, val=0, next=None):#         self.val = val#         self.next = nextclass Solution:def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:dummy=ListNode()tail=dummyp=list1q=list2while p and q:if p.val>=q.val:tail.next=qq=q.nextelse:tail.next=pp=p.nexttail=tail.nextif p==None:tail.next=qif q==None:tail.next=preturn dummy.next
http://www.xdnf.cn/news/17351.html

相关文章:

  • Ⅹ—6.计算机二级综合题27---30套
  • 微信小程序miniprogram-ci 模块实现微信小程序的自动上传功能
  • Python 文件(File) 的常用方法
  • NOIP 2024 游记
  • 【/usr/bin/env: “bash\r”: 没有那个文件或目录】问题解决
  • Java中的方法引用操作符(::)详解与实战应用
  • 2025华数杯数学建模A题【 多孔膜光反射性能的优化与控制】原创论文讲解(含完整python代码)
  • 电脑定时开关机终极指南
  • Python合并两个PDF文件
  • php防注入和XSS过滤参考代码
  • Access开发右下角浮窗提醒
  • Next.js 数据获取:使用 getServerSideProps 进行服务器端渲染
  • 机器学习——07 朴素贝叶斯
  • 强制用户更改WordPress密码的重要性及实现方法
  • Java集合中的链表
  • 控制建模matlab练习11:伯德图
  • ORACLE看当前连接数的方法
  • 【Oracle篇】Oracle Data Pump远程备份技术:直接从远端数据库备份至本地环境
  • USRP 毫米波通信解决方案
  • Jmeter使用第一节-认识面板(Mac版)
  • Linux图文理解进程
  • winform中的listbox实现拖拽功能
  • mysql的InnoDB索引总结
  • Oracle 关闭 impdp任务
  • JavaScript 伪装者现形记:类数组的真面目!
  • 数据结构与算法
  • Maven私服搭建--Nexus-3.82.0 Linux环境
  • 多场景两阶段分布式鲁棒优化模型、数据驱动的综合能源系统
  • 一文入门 matplotlib:从基础图表到数据可视化初体验
  • HTTP 协议升级(HTTP Upgrade)机制