首页 > 其他分享 >合并两个有序链表

合并两个有序链表

时间:2024-08-14 09:53:11浏览次数:17  
标签:ListNode 合并 链表 l2 有序 l1 null public

1、

public class MergeTwoSortedLists {

    // 方法:合并两个有序链表
    public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        // 创建一个虚拟节点作为合并后链表的头节点
        ListNode dummy = new ListNode(0);
        ListNode current = dummy;

        // 遍历两个链表,依次取出较小的节点加入合并后的链表
        while (l1 != null && l2 != null) {
            if (l1.val <= l2.val) {
                current.next = l1;
                l1 = l1.next;
            } else {
                current.next = l2;
                l2 = l2.next;
            }
            current = current.next;
        }

        // 如果有一个链表还剩下节点,直接连接到合并后的链表尾部
        if (l1 != null) {
            current.next = l1;
        } else {
            current.next = l2;
        }

        // 返回合并后的链表的头节点
        return dummy.next;
    }

 

 

 

2、递归

public class MergeTwoSortedLists {

    // 方法:递归合并两个有序链表
    public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        // 如果其中一个链表为空,则返回另一个链表
        if (l1 == null) return l2;
        if (l2 == null) return l1;

        if (l1.val <= l2.val) {
            l1.next = mergeTwoLists(l1.next, l2);
            return l1;
        } else {
            l2.next = mergeTwoLists(l1, l2.next);
            return l2;
        }
    }

 

 

标签:ListNode,合并,链表,l2,有序,l1,null,public
From: https://www.cnblogs.com/Jomini/p/18358227

相关文章

  • 内核链表常用宏——container_of()
    定义#definelist_entry(ptr,type,member)\ container_of(ptr,type,member)#defineoffsetof(TYPE,MEMBER)((size_t)&((TYPE*)0)->MEMBER)#definecontainer_of(ptr,type,member)({ \ consttypeof(((type*)0)->member)*__mptr=(ptr); ......
  • [YM]模板-单链表(超详细简洁模板)
    概念:链表是一种用于存储数据的数据结构,通过如链条一般的指针来连接元素。它的特点是插入与删除数据十分方便,但寻找与读取数据的表现欠佳,复杂度几乎是O(n)但其还是有很大的重要性是数据结构的开端模板:题目概述:相信大家对于单链表的操作已经游刃有余了,我们知道,对于一个单......
  • Excel工作表同类数据合并工具
    下载地址:https://pan.quark.cn/s/81b1aeb45e4c在Excel表格中,把多行同类数据合并为一行是件令人无比头痛的事情:首先,你得确定哪几条记录是可合并的同类数据,人工对比多个字段难免顾此失彼挂一漏万;其次,待合并的行可能分属多个分组,需要各自合并,但是同组的多行数据往往会分布在......
  • leetcode面试经典150-26. 删除有序数组中的重复项
    https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150 packageleetcode150import"testing"funcTestRemoveDuplicates(t*testing.T){nums:=[]int{0,0,1,1,1,......
  • SQL进阶技巧:断点缝合问题【如何按照业务规则对相邻行数据进行合并】
    目录0需求描述1数据准备2数据分析3小结 0需求描述如下图所示,按照定义的规则进行数据变换注意:b中的数值只有0和11数据准备withdataas(select2010 a,0bunionallselect2011 a,1bunionallselect2012 a,0bunionallselect2013 a,1bunionall......
  • 洛谷 P4556 雨天的尾巴之线段树合并模板
    洛谷P4556题解传送锚点摸鱼环节[Vani有约会]雨天的尾巴/【模板】线段树合并题目背景深绘里一直很讨厌雨天。灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切。虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连根拔起,以......
  • 单链表与双链表的代码实现
    单链表链表的概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表比数组的优势在于,它可以提供高效的重排数据的能力。这种灵活性的代价是不能快速访问表中的任意数据项,访问链表中数据项的唯一方式是沿着链表,一个......
  • C++提高编程—4、STL常用容器—list(链表)和queue(队列)
    7list容器 7.1基本概念 7.2 构造函数 7.3 赋值和交换 7.4 大小操作  使用10000来填充。7.5 插入与删除 7.6 数据存取 7.7 反转与排序  8set/multset容器 7.1基本概念7.2 构造和赋值7.3大小和交换7.4 插入与删除7.5 查......