当前位置:网站首页>【LeetCode】21. 合并两个有序链表
【LeetCode】21. 合并两个有序链表
2022-07-31 10:03:00 【酥酥~】
题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 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
l1 和 l2 均按 非递减顺序 排列
题解
新建一个链表
从头遍历两个链表,值较小的结点放入新链表中
/** * 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) {
ListNode* result = new ListNode();
ListNode* tmp = result;
while(list1 && list2)
{
if(list1->val <= list2->val)
{
tmp->next = list1;
list1 = list1->next;
}
else
{
tmp->next = list2;
list2 = list2->next;
}
tmp = tmp->next;
}
tmp->next = list1 ? list1 :list2;
return result->next;
}
};
使用递归方法
/** * 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 == nullptr)
return list2;
if(list2 == nullptr)
return list1;
if(list1->val <= list2->val)
{
list1->next = mergeTwoLists(list1->next,list2);
return list1;
}
else
{
list2->next = mergeTwoLists(list1,list2->next);
return list2;
}
}
};
边栏推荐
- 第二十二课,实例化(instancing)
- Scala basics [seq, set, map, tuple, WordCount, queue, parallel]
- 内联元素居中
- Add a shuffling effect to every pie
- 项目管理工具之燃尽图:动态考核团队工作能力
- Gradle系列——Groovy概述,基础使用(基于Groovy文档4.0.4)day2-1
- Mybaits 常用问题详解
- Open Kylin openKylin automation developer platform officially released
- SQLite3交叉编译
- ReentrantLock
猜你喜欢
随机推荐
数据中台建设(六):数据体系建设
cocoaPods管理之后工程结构变化
Burndown chart of project management tools: Dynamic assessment of team work ability
Solve rpc error: code = Unimplemented desc = method CheckLicense not implemented
开放麒麟 openKylin 自动化开发者平台正式发布
Mybaits Frequently Asked Questions Explained
第二十三课,抗锯齿(Anti Aliasing)
Browser usage ratio js radar chart
Flink1.15 source code reading - PER_JOB vs APPLICATION execution process
Web系统常见安全漏洞介绍及解决方案-CSRF攻击
来n遍剑指--05. 替换空格
GZIPInputStream 类源码分析
Flink1.15源码阅读flink-clients——flink命令行帮助命令
Redis集群-哨兵模式原理(Sentinel)
第五章
Come n times - 09. Implement queues with two stacks
canvas粒子变幻各种形状js特效
如何优雅的停止一个线程?
Dart Log tool class
NowCoderTOP28-34二叉树——持续更新ing









