当前位置:网站首页>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;
}
边栏推荐
- 【Redis】Redis 的安装及图形化界面 Redis DeskTop Manager 的安装与使用
- Flask框架学习:模板继承
- C语言文件操作——数据文件类型、文件判断、文件缓冲区详解
- Flask框架学习:路由的尾部斜杠
- 家·谱——人脸识别家谱系统
- 基于 TF-IDF 文本匹配实战详细教程 数据+代码 可直接运行
- pytorch安装笔记——Pytorch在conda+CUDA10.2环境安装task01
- (二)性能实时监控平台搭建(Grafana+Prometheus+Jmeter)
- [Verilog] I2S Master Test Bench
- (1) Docker installs Redis in practice (one master, two slaves, three sentinels)
猜你喜欢
Blender 初教程
(二)性能实时监控平台搭建(Grafana+Prometheus+Jmeter)
总结:交叉验证
(1) Construction of a real-time performance monitoring platform (Grafana+Influxdb+Jmeter)
Django--20实现Redis支持、上下文以及上下文和接口的交互
【网站小白】mySQL数据库异常断开
【win10+cuda7.5+cudnn6.0安装caffe③】编译及测试caffe
手推卷积神经网络参数(卷积核)求导
The most complete installation tutorial of Pytorch (one step)
C语言结构体详解 (2) 结构体内存对齐,默认对齐数
随机推荐
【翻译】博客游戏项目Q1K3 – 制作
LeetCode43. String multiplication (this method can be used to multiply large numbers)
C语言——文件操作(2)文件的读写操作
Redis - Data Types (Basic Instructions, String, List, Set, Hash, ZSet, BitMaps, HyperLogLog, GeoSpatial) / Publish and Subscribe
【win10+cuda7.5+cudnn6.0安装caffe⑥】报错及处理方式
基于TF-IDF 文本相似性实战 详细教程
数组的用法
Flask framework learning: template rendering and Get, Post requests
0708作业---商品信息
Markdown 常用到的一些编写技巧
(3) Construction of a real-time performance monitoring platform (Grafana+Prometheus+Node_explorer+Jmeter)
【备忘】从零开始搭建Yolo5训练环境
吃瓜教程task01 第1章 绪论
QT QLabel控件(使用详解)
第4章 复合类型-1
ClionIDE通过指定编译器编译
PCIe 接口 引脚定义 一览表
Flask framework to study: the debug and configuration items
搭建PX4开发环境
CSDN 社区内容创作规范