LeetCode 21. 合并两个有序链表

文章目录

题目

21. 合并两个有序链表

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

示例 1:
在这里插入图片描述

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1l2 均按 非递减顺序 排列

思路

算法:
双指针算法 O(m+n)

  1. l1表示当前链表1枚举到的位置,l2表示当前链表2枚举到的位置,dummy表示新开存结果的链表
  2. l1l2都不为空
    如果l1.val <= l2.val,则把l1.val加入到dummy链表的后面
    如果l1.val > l2.val,则把l2.val加入到dummy链表的后面
  3. 当最后l1或者l2存在一个为空时,只有把存在剩余元素的链表继续拼接到dummy后面即可

时间复杂度:nm分别表示两个链表的长度,所以总的时间复杂度为 O(m+n) .

代码

C++代码:

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode dummy = new ListNode(0);
        ListNode cur = dummy;
        while(l1 != null && l2 != null)
        {
            if(l1.val <= l2.val)
            {
                cur.next = new ListNode(l1.val);
                l1 = l1.next;
                cur = cur.next;
            } 
            else
            {
                cur.next = new ListNode(l2.val);
                l2 = l2.next;
                cur = cur.next;
            }
        }
        if(l1 != null) cur.next = l1;
        if(l2 != null) cur.next = l2;
        return dummy.next;
    }
}

python3代码:

class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        # iterative
        dummy = cur = ListNode(0)
        while l1 and l2:
            if l1.val < l2.val:
                cur.next = l1
                l1 = l1.next
            else:
                cur.next = l2
                l2 = l2.next
            cur = cur.next
        cur.next = l1 or l2
        return dummy.next

相关推荐

  1. Leetcode21 合并有序

    2024-05-13 12:14:06       66 阅读
  2. Leetcode 21合并有序

    2024-05-13 12:14:06       60 阅读
  3. [leetcode] 21. 合并有序

    2024-05-13 12:14:06       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 12:14:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 12:14:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 12:14:06       82 阅读
  4. Python语言-面向对象

    2024-05-13 12:14:06       91 阅读

热门阅读

  1. centos的常用命令

    2024-05-13 12:14:06       32 阅读
  2. MySQL运维总结

    2024-05-13 12:14:06       37 阅读
  3. LeetCode 2391. 收集垃圾的最少总时间

    2024-05-13 12:14:06       38 阅读
  4. MySQL Undo Log、Redo Log、bin Log

    2024-05-13 12:14:06       30 阅读
  5. 哲学家就餐问题

    2024-05-13 12:14:06       34 阅读
  6. OpenCV图像转换处理

    2024-05-13 12:14:06       36 阅读
  7. C++贪心算法

    2024-05-13 12:14:06       35 阅读
  8. vty、带内/带外管理、带内/带外ip简介

    2024-05-13 12:14:06       40 阅读