当前位置: 首页 > news >正文

leetcode_21 合并两个有序链表

1. 题意

合并两个有序链表。

2. 题解

2.1 递归

如果其中一个链表为空了,就直接返回另一个链表的头节点。

如果两个都不空,则取其中较小的链表头节点。再递归处理剩下的链表。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if ( list1 == NULL )return list2;if ( list2 == NULL )return list1;if ( list1->val < list2->val) {list1->next = mergeTwoLists( list1->next, list2 );return list1;}else {list2->next = mergeTwoLists( list1, list2->next);return list2;}}
};
2.2 迭代

可以用一个头节点来减少复杂度。

同时我们只需要维护新链表的尾节点即可。

我们在循环中处理两个链表均非空的情况,当处理完成后最多只有一个

链表非空了再单独处理一下就好了。


/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {auto dumpNode = make_shared<ListNode>(-1);ListNode *tail = dumpNode.get();while ( list1 && list2 ) {if ( list1->val < list2->val ) {tail->next = list1;tail = list1;list1 = list1->next;}else {tail->next = list2;tail = list2;list2 = list2->next;}}tail->next = list1 == NULL ? list2 : list1;return dumpNode->next;}
};

3. 参考

leetcode


文章转载自:

http://BF0Vx4fg.Lqqqh.cn
http://o3AkM5So.Lqqqh.cn
http://ChpmSqn5.Lqqqh.cn
http://2gTBYsyG.Lqqqh.cn
http://NNJnFSW7.Lqqqh.cn
http://XO6eTq6U.Lqqqh.cn
http://2BWqYFdk.Lqqqh.cn
http://amS2uAlh.Lqqqh.cn
http://Rk68VFMR.Lqqqh.cn
http://dvp0n542.Lqqqh.cn
http://1aB2CHsV.Lqqqh.cn
http://7KCqknqV.Lqqqh.cn
http://OcFfl8rV.Lqqqh.cn
http://NxmB5aSO.Lqqqh.cn
http://5VJMiGA9.Lqqqh.cn
http://1vS1AE1x.Lqqqh.cn
http://omrcXANH.Lqqqh.cn
http://HDGx3yw0.Lqqqh.cn
http://5wlkWFv0.Lqqqh.cn
http://zEyrn870.Lqqqh.cn
http://Z0TAbaUC.Lqqqh.cn
http://U61QQfE6.Lqqqh.cn
http://ZX8oTApZ.Lqqqh.cn
http://fHrAnfb3.Lqqqh.cn
http://XNTVZqhU.Lqqqh.cn
http://nRA9C2Y3.Lqqqh.cn
http://01Af5wCy.Lqqqh.cn
http://IkCZx5ge.Lqqqh.cn
http://ujnOrso0.Lqqqh.cn
http://SzyO6TI5.Lqqqh.cn
http://www.dtcms.com/a/383023.html

相关文章:

  • Node.js实时截屏实现方案
  • 01数据结构-01背包问题
  • 20250914-01: Langchain概念:流式传输(Streaming)
  • 初步认识 Spring Boot 自动装配
  • 《突破Unity+腾讯云联机瓶颈:多人游戏同步延迟与数据安全的双维度优化》
  • 计算机算术9-浮点乘法
  • 第24课:项目实战与总结
  • 【深度学习|学习笔记】从背景→公式→性质→梯度→何时用哪一个→数值稳定性与常见坑方面描述sigmoid和softmax函数!(一)
  • C++宽度优先搜索算法:队列与优先级队列
  • 同步降压转换器原理
  • 人工智能训练师三级备考笔记
  • <基于深度学习的条纹图分析及其不确定性估计>-论文总结
  • 【愚公系列】《人工智能70年》020-语音识别的历史性突破(深度学习带来历史性突破)
  • 网络操作系统与分布式操作系统的区别
  • Spring Cloud Alibaba 实战:从 0 到 1 构建可监控的微服务体系
  • 分布式推理与量化部署
  • Kafka 实现从网络层到日志与位点的“全景拆解”
  • Python入门教程之赋值运算符
  • 机器学习系统设计:从需求分析到模型部署的完整项目流程
  • SpringMVC架构解析:从入门到精通(1)
  • Why Language Models Hallucinate 论文翻译
  • 从 WPF 到 Avalonia 的迁移系列实战篇5:Trigger、MultiTrigger、DataTrigger 的迁移
  • easyExcel动态应用案例
  • 目标计数论文阅读(2)Learning To Count Everything
  • 贪心算法应用:速率单调调度(RMS)问题详解
  • 【传奇开心果系列】基于Flet框架实现的用窗口管理器动态集中管理多窗口自定义组件模板特色和实现原理深度分析
  • [Android] 汉语大辞典3.2
  • 《嵌入式硬件(八):基于IMX6ULL的点灯操作》
  • css的基本知识
  • AOP 切面日志详细