首页 > 其他分享 >【LeetCode Hot 100】21. 合并两个有序链表

【LeetCode Hot 100】21. 合并两个有序链表

时间:2024-09-27 10:49:50浏览次数:14  
标签:p2 p1 ListNode 21 nullptr next 链表 Hot

题目描述

最简单粗暴的想法是将两个链表的所有元素拿出来放在一个数组中,再将此数组排序,最后生成一个新链表并返回。由于给出的参数本身就是两个排好序的链表,可以进行一次遍历,就能保证元素仍然是有序的:每次比较当前指针指向的两个元素的大小,较小的拿出来作为当前元素并将指针向前移动一个位置,然后继续比较下一个元素。对于内存的使用也可以优化,可以直接复用当前链表的结点,仅仅调整结点之间指针的指向即可。

// C++
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        if (list1 == nullptr) {
            return list2;
        }
        if (list2 == nullptr) {
            return list1;
        }
        ListNode* head = new ListNode();
        ListNode* p = head;
        ListNode *p1 = list1, *p2 = list2;
        while (p1 != nullptr && p2 != nullptr) {
            if (p1->val < p2->val) {
                p->next = p1;
                p1 = p1->next;
                p = p->next;
            } else {
                p->next = p2;
                p2 = p2->next;
                p = p->next;
            }
        }
        if (p1 != nullptr) {
            p->next = p1;
        }
        if (p2 != nullptr) {
            p->next = p2;
        }
        return head->next;
    }
};

标签:p2,p1,ListNode,21,nullptr,next,链表,Hot
From: https://www.cnblogs.com/louistang0524/p/18435248

相关文章

  • maven 使用SNAPSHOT版本确实可以帮助开发团队更高效地迭代和测试新功能
    使用SNAPSHOT版本确实可以帮助开发团队更高效地迭代和测试新功能。下面是一个更详细的解释:快速迭代频繁构建和部署:由于SNAPSHOT版本通常与持续集成(CI)工具结合使用,因此每次提交代码后都可以触发构建和部署流程。这意味着每次有新的代码更改时,都会有一个新的SNAPSHOT版本产......
  • [Python手撕]重排链表
    #Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defreorderList(self,head:Optional[ListNode])->None:""&quo......
  • 链表
    链表SingleListArrayList的缺陷在熟悉并且自己写了一个ArrayList顺序表的底层架构的时候发现ArrayList是利用数组来存储数据的效率比较低:这里说两个例子在插入以及删除的时候ArrayList都需要移动剩余的元素在开始的时候设置了初始的内存后续需要扩容这里也是效率低......
  • 易优CMS出现:Allowed memory size of 134217728 bytes exhausted (tried to allocate 2
    当你遇到“Allowedmemorysizeof134217728bytesexhausted(triedtoallocate20480bytes)”的错误时,这意味着PHP的内存限制已经耗尽。这种错误通常发生在处理大量数据或执行复杂计算时。为了解决这个问题,可以采取以下几种方法:方法1:修改 php.ini 文件(推荐)找到 php......
  • 易优CMS登录后台报Allowed memory size of 134217728 bytes ex hausted (tried to alo
    当你在登录后台时遇到“Allowedmemorysizeof134217728bytesexhausted(triedtoallocate20480bytes)”的错误提示时,通常是由于PHP的内存限制不足导致的。以下是一些具体的解决步骤:步骤1:检查PHP配置登录宝塔面板登录宝塔面板。在左侧菜单栏选择“软件商店”。......
  • 算法记录——链表
    2.链表2.1判断是否是回文链表1.方法一:利用栈反转链表/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*ListNode(intval){this.val=val;}*ListNode(intval,Lis......
  • 【数据结构.总集篇】第一章 链表
    文章目录1.链表1.1线性表1.2顺序表1.3单链表链表简介单链表的介绍线性表的链式存储头节点概念为何引入头结点单链表的基本操作创建一个单链表初始化头插法尾插法删除操作打印总代码1.4单链表循环1.5双链表双链表的定义双链表上的操作初始化插入操作头插法尾插法......
  • 【LeetCode Hot 100】20. 有效的括号
    题目描述这个题目在讲解栈的应用的时候是常用的例子,在遍历括号串的时候维护一个栈结构,如果当前字符是前括号,暂时没有与之配对的后括号,则先将其压入栈中。C++STL和Java都提供了对应的容器,但是由于我们知道栈的大小不可能超过括号串的长度,所以也可以手动用数组模拟,这样运行速度可......
  • CEG2136: Computer Architecture I
    CEG2136:ComputerArchitectureILAB4           BASICCOMPUTERORGANIZATION1. ObjectivesIn this laboratory, students will analyse the structure of a basic computer, will devise, design, implement,simulateinQuartusa......
  • 9.21学习日记
    2.~9.15            4km 5.221.学习狂神说的git课程git文档笔记地址:D:\BaiduNetdiskDownload\develop\Git微信笔记文档地址https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ1.1常用的Linux命令平时一定要多使用这些基础的命令!1)、cd:改变......