From ae40e011a79e12a6f010a1aa40977a53b094bf9e Mon Sep 17 00:00:00 2001 From: Wonder Date: Fri, 3 Oct 2025 14:44:21 +0800 Subject: [PATCH] =?UTF-8?q?=20=F0=9F=94=84Update:=20=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=9C=89=E5=BA=8F=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 链表/6. 合并两个有序链表.md | 75 +++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 链表/6. 合并两个有序链表.md diff --git a/链表/6. 合并两个有序链表.md b/链表/6. 合并两个有序链表.md new file mode 100644 index 0000000..52ec6c6 --- /dev/null +++ b/链表/6. 合并两个有序链表.md @@ -0,0 +1,75 @@ +# 合并两个有序链表 + +## 题目 + +将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 + + + +示例 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 均按 非递减顺序 排列 + + +## 思路 + +- 比较后尾插法 + +## 代码 + +```java +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode list1, ListNode list2) { + // Init: DummyHead, cur + ListNode dummyHead = new ListNode(-1); + ListNode cur = dummyHead; + // Traverse: Compare + while (list1 != null && list2 != null) { + // val1 = list1.val; + // val2 = list2.val; + ListNode tmp = null; + if (list1.val > list2.val) { + tmp = list2; + list2 = list2.next; + } else { + tmp = list1; + list1 = list1.next; + } + cur.next = tmp; + cur = cur.next; + } + + cur.next = list1 == null ? list2 : list1; + + return dummyHead.next; + + } +} +```