leetcode_链表 21.合并两个有序链表

ops/2025/1/24 10:06:08/

21.合并两个有序链表

  • 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
  • 思路:
    1. 定义一个哑节点(dummy node),哑节点是一个初始的虚拟节点,它不存储有效值,只是方便操作,定义一个指针 current 指向哑节点,用于构建新链表
    2. 遍历两个链表,使用两个指针 p1 和 p2 分别指向 list1 和 list2 的头部,并比较 p1.val 和 p2.val,将较小值的节点连接到 current.next。
    3. 处理剩余部分,当一个链表遍历完后,将另一个链表的剩余部分直接连接到 current.next。
    4. 返回结果,最终返回哑节点的下一个节点 dummy.next,即为合并后的链表头。
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):def mergeTwoLists(self, list1, list2):# 定义哑节点和当前指针dummy = ListNode(-1)  # 哑节点,初始值无意义current = dummy# 遍历两个链表while list1 and list2:if list1.val <= list2.val:  # 比较两个链表当前节点的值current.next = list1  # 将list1当前节点连接到结果链表list1 = list1.next  # 移动list1指针else:current.next = list2  # 将list2当前节点连接到结果链表list2 = list2.next  # 移动list2指针current = current.next  # 移动结果链表指针# 处理剩余部分if list1:  # 如果list1还有节点current.next = list1if list2:  # 如果list2还有节点current.next = list2# 返回合并后的链表return dummy.next""":type list1: Optional[ListNode]:type list2: Optional[ListNode]:rtype: Optional[ListNode]"""
  • 时间复杂度:O(m+n)
    • 每次操作一个节点,总共需要遍历两个链表的所有节点,即时间复杂度为 O(n + m),其中 n 和 m 是两个链表的长度。
  • 空间复杂度:O(1)

http://www.ppmy.cn/ops/152706.html

相关文章

Flutter:搜索页,搜索bar封装

view 使用内置的Chip简化布局 import package:chenyanzhenxuan/common/index.dart; import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:tdesign_flutter/tdesign_flutter.dart;import i…

vscode下poetry管理项目的debug配置

点击debug选项的设置按钮&#xff0c;vscode会让我们编辑launch.json文件 {"version": "0.2.0","configurations": [{"name": "Python 调试程序: 当前文件","type": "debugpy","request": &…

数据库索引(1)

数据库索引 1.索引介绍 索引是一种 特殊的数据库结果&#xff0c;由数据表中的一列或多列组合而成&#xff0c;可以用来快速查询数据表中某一些特定值的记录。 通过索引&#xff0c;查询数据是不用读完记录的所有信息&#xff0c;而只是查询索引列。否则&#xff0c;数据库系…

什么是软件架构

什么是软件架构 程序员说&#xff0c;软件架构是要决定编写哪些C程序或OO类、使用哪些库和框架 程序经理说&#xff0c;软件架构就是模块的划分和接口的定义 系统分析员说&#xff0c;软件架构就是为业务领域对象的关系建模 配置管理员说&#xff0c;软件架构就是开发出来的…

【JVM】垃圾收集器详解

你将学到 1. Serial 收集器 2. ParNew 收集器 3. Parallel Scavenge 收集器 4. Serial Old 收集器 5. Parallel Old 收集器 6. CMS 收集器 7. G1 收集器 在 Java 中&#xff0c;垃圾回收&#xff08;GC&#xff09;是自动管理内存的一个重要机制。HotSpot JVM 提供了多种…

【网络协议】【http】【https】TLS1.3

【网络协议】【http】【https】TLS1.3 TLS1.3它的签名算法和密钥交换算法&#xff0c;默认情况下是被固定了下来的&#xff0c;他的加密套件里面呢&#xff0c;只包含了对称加密算法和摘要算法 客户端和服务器第一次连接 仍然需要1RTT &#xff0c;不能0-RTT 第一次连接 1.客…

B站评论系统的多级存储架构

以下文章来源于哔哩哔哩技术 &#xff0c;作者业务 哔哩哔哩技术. 提供B站相关技术的介绍和讲解 1. 背景 评论是 B站生态的重要组成部分&#xff0c;涵盖了 UP 主与用户的互动、平台内容的推荐与优化、社区文化建设以及用户情感满足。B站的评论区不仅是用户互动的核心场所&…

Typesrcipt泛型约束详细解读

代码示例&#xff1a; // 如果我们直接对一个泛型参数取 length 属性, 会报错, 因为这个泛型根本就不知道它有这个属性 (() > {// 定义一个接口,用来约束将来的某个类型中必须要有length这个属性interface ILength{// 接口中有一个属性lengthlength:number}function getLen…