当前位置:网站首页>【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;
}
}
};
边栏推荐
猜你喜欢

NowCoderTOP17-22 二分查找/排序——持续更新ing

Kotlin—基本语法(三)

Gradle series - Groovy overview, basic use (based on Groovy document 4.0.4) day2-1

感情危机,朋友的网恋女友要和他闹分手,问我怎么办

Flink1.15源码阅读——PER_JOB vs APPLICATION执行流程

Web系统常见安全漏洞介绍及解决方案-XSS攻击

模块八

Data Middle Office Construction (6): Data System Construction

Gradle系列——Groovy概述,基础使用(基于Groovy文档4.0.4)day2-1

作为面试官,关于线程池的问题我一般这样套路...
随机推荐
js部门预算和支出雷达图
centos7安装mysql5.7
js实现2020年元旦倒计时公告牌
可以用聚酯树脂将接线板密封接线盒吗?(接线盒灌封胶用哪种树脂)
Qt 编译错误:C2228: “.key”的左边必须有类/结构/联合
数字加分隔符
迪拜的超市---线段树双重懒标记+二分
GCD简单了解
内联元素居中
二叉树的搜索与回溯问题(leetcode)
第二十四课、二十五课,高级光照(blinn),Gamma矫正
Kotlin—基本语法 (四)
比较并交换 (CAS) 原理
初识二叉搜索树
前序、后序及层次遍历实现二叉树的序列化与反序列化
NowCoderTOP17-22 二分查找/排序——持续更新ing
Gradle series - Groovy overview, basic use (based on Groovy document 4.0.4) day2-1
canvas粒子变幻各种形状js特效
踩水坑2 数据超出long long
qt pass custom structure parameters in different threads