当前位置:网站首页>LeetCode热题(11.合并两个有序链表)
LeetCode热题(11.合并两个有序链表)
2022-08-09 11:42:00 【识时务者-HJJ】
合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 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 均按 非递减顺序 排列
package com.leetcode;
import java.util.ArrayList;
import java.util.List;
/** * @Author Handsome * @Date 2022/8/9 10:12 * @Version 1.0 */
public class 合并两个有序链表 {
/** * Definition for singly-linked list. */
public static class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public static void main(String[] args) {
ListNode listNode = mergeTwoLists(
new ListNode(1,
new ListNode(2,
new ListNode(4))),
new ListNode(1,
new ListNode(3,
new ListNode(4))));
List list = new ArrayList();
while (listNode != null) {
list.add(listNode.val);
listNode = listNode.next;
}
System.out.println(list);
// 输入 [1,2,4] [1,3,4]
// 输出 [1,1,2,3,4,4]
}
/** * 复杂度分析: * 时间复杂度:O(n+m),其中 n 和 m 分别为两个链表的长度。 * 因为每次调用递归都会去掉 l1 或者 l2 的头节点(直到至少有一个链表为空), * 函数 mergeTwoList 至多只会递归调用每个节点一次。 * 因此,时间复杂度取决于合并后的链表长度,即 O(n+m)。 * 空间复杂度:O(n+m),其中 n 和 m 分别为两个链表的长度。 * 递归调用 mergeTwoLists 函数时需要消耗栈空间,栈空间的大小取决于递归调用的深度。 * 结束递归调用时 mergeTwoLists 函数最多调用 n+m 次,因此空间复杂度为 O(n+m)。 */
public static ListNode mergeTwoLists(ListNode l1, 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;
}
}
}
我的学习论坛
HandsomeForum:用Java编写的学习论坛,打造我们自己的圈子!(http://huangjunjie.vip:66)
边栏推荐
猜你喜欢
enum in c language
2022 全球 AI 模型周报
Fapi_StatusType Fapi_issueProgrammingCommand使用注意事项
Redis的下载安装
Ways to prevent data fraud
爱可可AI前沿推介(8.9)
[现代控制理论]5_系统的可控性_controllability
matlab simulink的scope 示波器光标如何移动记录
Semaphore SIGCHLD use, how to make the parent that the child performs over, how to make the distinction between multiple child processes. The end
"Digital Economy Panorama White Paper" Special Analysis of Banking Industry Intelligent Marketing Application Released
随机推荐
实现strcat函数
Fapi_StatusType Fapi_issueProgrammingCommand使用注意事项
《数字经济全景白皮书》银行业智能营销应用专题分析 发布
C# 获取系统已安装的.NET版本
抗积分饱和 PID代码实现,matlab仿真实现
MySQL的MVVC多版本并发控制机制
预置第三方apk到MTK项目相关问题总结
GET请求和POST请求区别
WPF 实现带蒙版的 MessageBox 消息提示框
元宇宙:下一代互联网启程(附元宇宙深度报告PDF)
Win10调整磁盘存储空间详解
ACM longest non-descent subsequence problem
mysql参数配置学习----临时表内存表的设置
redis缓存如何保证数据一致性
proto3-2 syntax
MySQL中的锁
[现代控制理论]4_PhasePortrait爱情故事动态系统分析
ICML 2022 | Out-of-Distribution检测与深最近的邻居
【面试高频题】可逐步优化的链表高频题
PAT1006