欢乐力扣:合并两个有序链表

文章目录


1、题目描述

合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

在这里插入图片描述

2、思路

参考官方题解,简单来说就是不断调整链表指针的指向,让其指向两个链表中较小的节点。另外,当循环结束时,记得指向较长链表的后半段,(因为链表是有序的,所以可以直接指向)。

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def mergeTwoLists(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        prehead = ListNode(-1)  # 用于最终返回链表head
        prev = prehead         
        while l1 and l2:
            if l1.val <= l2.val:
                prev.next = l1
                l1 = l1.next 
                prev = prev.next
            else:
                prev.next = l2 
                l2 = l2.next 
                prev = prev.next
        # 将剩下非空链表拼接到后一个
        if l1:
            prev.next = l1 
        if l2:
            prev.next = l2 
        # 返回头结点的后一个节点
        return prehead.next 
相关推荐
chenchihwen1 小时前
深度解析RAG系统中的PDF解析模块:Docling集成与并行处理实践
python·算法·pdf
404未精通的狗2 小时前
(数据结构)线性表(下):链表分类及双向链表的实现
数据结构·链表
做科研的周师兄3 小时前
【机器学习入门】7.4 随机森林:一文吃透随机森林——从原理到核心特点
人工智能·学习·算法·随机森林·机器学习·支持向量机·数据挖掘
Sunsets_Red3 小时前
差分操作正确性证明
java·c语言·c++·python·算法·c#
【杨(_> <_)】3 小时前
SAR信号处理重要工具-傅里叶变换(二)
算法·信号处理·傅里叶分析·菲涅尔函数
怎么没有名字注册了啊4 小时前
爬动的蠕虫
算法
取酒鱼食--【余九】4 小时前
机器人学基础(一)【坐标系和位姿变换】
笔记·算法·机器人·开源·机器人运动学·机器人学基础
晨非辰4 小时前
【面试高频数据结构(四)】--《从单链到双链的进阶,读懂“双向奔赴”的算法之美与效率权衡》
java·数据结构·c++·人工智能·算法·机器学习·面试
im_AMBER4 小时前
数据结构 03 栈和队列
数据结构·学习·算法
凸头4 小时前
以AtomicInteger为例的Atomic 类的底层CAS细节理解
java·jvm·算法