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

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.dtcms.com/a/321031.html

相关文章:

  • 如何板端编译OpenCV并搭建应用--基于瑞芯微米尔RK3576开发板
  • 视频质量检测中准确率↑32%:陌讯多模态评估方案实战解析
  • stm32u575手写数字识别教程
  • Coze Studio 概览(九)--插件管理
  • sqli-labs通关笔记-第37关POST宽字符注入(单引号闭合 手工注入+脚本注入 3种方法)
  • Zabbix监控MySQL性能实战指南
  • OpenAI 正式发布 GPT-5:架构与性能全解析
  • 【深度学习1】什么是神经网络
  • TDSQL GTS文件说明
  • SQL的多表连接查询(难点)
  • 【代码随想录day 15】 力扣 110.平衡二叉树
  • 总结运行CRMEB标准版(uniapp)微信小程序的问题
  • Spring Boot 优雅配置InfluxDB3客户端指南:@Configuration + @Bean + yml实战
  • 配置MyBatis SQL日志打印
  • 机器学习-----SVM(支持向量机)算法简介
  • PEV2(PostgreSQL Explain Visualizer 2)
  • 云平台运维工具 —— 阿里云原生工具
  • 2025年最新Java后端场景题+八股文合集(100w字面试题总结)
  • 「双训智伴」:重构人犬协同的智能训练生态系统
  • 基于 C++ 的湍流数值模拟理论报告
  • 无人机遥控器教练模式技术要点
  • Go 踩过的坑之协程参数不能过大
  • Chat GPT5功能
  • ESP32-menuconfig(3) -- Serial flasher config
  • 宁商平台税务升级之路:合规为纲,服务为本
  • 唯品会以图搜图(拍立淘)API接口调用指南详解
  • Vite React项目引入unocss 及 @unocss/preset-icons的使用
  • Mac安装python、conda环境教程
  • 相机坐标系与世界坐标系的点相互转换:原理、可视化与实践
  • Spring MVC REST API设计详解:从零构建高效接口