【算法hot-21】合并链表
2023-09-27 14:29:28 时间
合并链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
public class LC003_21_mergeTwoLists_01 {
public static void main(String[] args) {
ListNode node = mergeTwoLists(ListNode.createLink(), ListNode.createLink());
ListNode.printLink(node);
}
public static ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if (list1 == null) {
return list2;
}
if (list2 == null) {
return list1;
}
if (list1.val < list2.val) {
list1.next = mergeTwoLists(list1.next, list2);
return list1;
} else {
list2.next = mergeTwoLists(list1, list2.next);
return list2;
}
}
}
//迭代
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode l3 = new ListNode(-1);
ListNode l4 = l3;
while (l1 != null && l2 != null) {
if (l1.val > l2.val) {
l4.next = l2;
l2 = l2.next;
} else {
l4.next = l1;
l1 = l1.next;
}
l4 = l4.next;
}
l4.next = l1 == null ? l2 : l1;
return l3.next;
}
相关文章
- LeetCode.160. 相交链表
- 【链表】数据结构与算法——代码随想录
- 递归解决k个一组的链表节点翻转问题
- LeetCode109_Convert Sorted List to Binary Search t题目tiTree(将链表转成二叉排序树) Java题解
- 双向链表
- LeetCode_双指针_中等_24.两两交换链表中的节点
- LeetCode_双指针_中等_19.删除链表的倒数第 N 个结点
- LeetCode刷题(1)【链表】【反转链表】(C语言)
- LeetCode刷题(16)【简单】移除链表元素&&回文链表&&删除链表中的结点
- JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)(上)
- 链表的插入、删除和查询—C语言
- 翻转链表算法和实现
- 【JAVA】力扣-19.删除链表的倒数第 N 个结点
- Go程序员面试算法宝典-读后感2-链表
- LeetCode-83. 删除排序链表中的重复元素(java)
- 数据结构——求单向链表的倒数第K个节点
- leetcode 24 两两交换链表中的节点
- 【算法hot-19】删除链表倒数第n个节点
- 【算法010】反转链表(206)
- python学习之数据结构(三):数据结构与算法:顺序表、链表