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

文章目录


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 
相关推荐
Gu_shiwww8 小时前
数据结构8——双向链表
c语言·数据结构·python·链表·小白初步
你怎么知道我是队长9 小时前
C语言---循环结构
c语言·开发语言·算法
艾醒9 小时前
大模型面试题剖析:RAG中的文本分割策略
人工智能·算法
纪元A梦11 小时前
贪心算法应用:K-Means++初始化详解
算法·贪心算法·kmeans
_不会dp不改名_11 小时前
leetcode_21 合并两个有序链表
算法·leetcode·链表
mark-puls11 小时前
C语言打印爱心
c语言·开发语言·算法
Python技术极客12 小时前
将 Python 应用打包成 exe 软件,仅需一行代码搞定!
算法
吃着火锅x唱着歌12 小时前
LeetCode 3302.字典序最小的合法序列
leetcode
睡不醒的kun12 小时前
leetcode算法刷题的第三十四天
数据结构·c++·算法·leetcode·职场和发展·贪心算法·动态规划
吃着火锅x唱着歌12 小时前
LeetCode 978.最长湍流子数组
数据结构·算法·leetcode