当前位置:网站首页>leetcode21. Merge two ordered linked lists
leetcode21. Merge two ordered linked lists
2022-08-11 05:46:00 【FussyCat】
leecode题链接:LeetCode21.合并两个有序链表
题目描述:
将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的.
示例 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 均按 非递减顺序 排列
解题思路:
分别使用递归法和迭代法.
以下用C语言实现:
递归法:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
if (l1 == NULL) {
return l2;
} else if (l2 == NULL) {
return l1;
} else if (l1->val < l2->val) {
l1->next = mergeTwoLists(l1->next, l2);
return l1;
} else {
l2->next = mergeTwoLists(l1, l2->next);
return l2;
}
}
迭代法:
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
struct ListNode *head = (struct ListNode *)malloc(sizeof(struct ListNode)); /* The chain of distribution header */
struct ListNode *prev = head;
while (l1 != NULL && l2 != NULL) {
if (l1->val < l2->val) {
prev->next = l1;
l1 = l1->next;
} else {
prev->next = l2;
l2 = l2->next;
}
prev = prev->next;
}
prev->next = (l1 == NULL) ? l2 : l1; /* The situation of the first list is empty */
return head->next;
}
边栏推荐
猜你喜欢

总结:交叉验证

C语言——动态内存分配常见的错误案例

Redis - Data Types (Basic Instructions, String, List, Set, Hash, ZSet, BitMaps, HyperLogLog, GeoSpatial) / Publish and Subscribe

吃瓜教程task04 第5章 神经网络

【win10+cuda7.5+cudnn6.0安装caffe②】安装Visual Studio 2013和caffe

task04 Pytorch进阶训练技巧

DS220702-0707作业

Django--20实现Redis支持、上下文以及上下文和接口的交互

【win10+cuda7.5+cudnn6.0安装caffe①】安装cuda和cudnn

【转载】CMake 语法 - 详解 CMakeLists.txt
随机推荐
一张图带你解读--如何从零开始学习接口自动化
第8章 函数探幽-2
C语言——文件操作(2)文件的读写操作
基于TF-IDF 文本相似性实战 详细教程
(1) Construction of a real-time performance monitoring platform (Grafana+Influxdb+Jmeter)
C语言——逆序输出字符串的函数实现
Redis - Data Types (Basic Instructions, String, List, Set, Hash, ZSet, BitMaps, HyperLogLog, GeoSpatial) / Publish and Subscribe
(二)Docker安装Redis实战(持久化AOF和RDB快照)
Markdown 常用到的一些编写技巧
滴滴出行 nlp算法工程师面试经验分享 带offer截图真实
全国青少年信息学奥林匹克联赛大纲
Summary: Cross Validation
利用rand函数随机生成uuid
【win10+cuda7.5+cudnn6.0安装caffe③】编译及测试caffe
ClionIDE通过指定编译器编译
RK3399上的Tengine实践笔记
Flask framework learning: template inheritance
【C语言进阶】第一篇深度剖析整数数据在内存中的存储(一)
task02 fashion-mnist分类实战
我的四核Cortex-A53学习之路