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

文章目录


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 
相关推荐
严文文-Chris10 小时前
【半监督学习常见算法】
学习·算法·机器学习
爱学java的ptt10 小时前
206反转链表
数据结构·链表
FPGA_无线通信10 小时前
OFDM 同步设计(3)
算法·fpga开发
SHOJYS10 小时前
离散化+二位前缀和的计数题 [USACO20DEC] Rectangular Pasture S
算法
java修仙传10 小时前
力扣hot100:最大子数组和
数据结构·算法·leetcode
想唱rap10 小时前
C++之unordered_set和unordered_map
c++·算法·哈希算法
Rock_yzh10 小时前
LeetCode算法刷题——54. 螺旋矩阵
数据结构·c++·学习·算法·leetcode·职场和发展·矩阵
papership10 小时前
【入门级-算法-5、数值处理算法:高精度整数除以单精度整数的商和余数】
算法
CoderYanger11 小时前
C.滑动窗口-求子数组个数-越短越合法——3258. 统计满足 K 约束的子字符串数量 I
java·开发语言·算法·leetcode·1024程序员节
2301_8079973811 小时前
代码随想录-day56
算法