From 33096294bb0fb2d8709bf9c40a99376668d0328e Mon Sep 17 00:00:00 2001
From: z979054461 <979054461@qq.com>
Date: Sun, 17 Mar 2024 21:43:15 +0800
Subject: [PATCH] =?UTF-8?q?feat(leecode):=2023.=E5=90=88=E5=B9=B6k?=
=?UTF-8?q?=E4=B8=AA=E5=8D=87=E5=BA=8F=E9=93=BE=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...07\345\272\217\351\223\276\350\241\250.md" | 4 +-
...07\345\272\217\351\223\276\350\241\250.js" | 47 +++++++++----------
...7\345\272\217\351\223\276\350\241\2501.js" | 46 ++++++++++++++++++
...7\345\272\217\351\223\276\350\241\2502.js" | 45 ++++++++++++++++++
4 files changed, 117 insertions(+), 25 deletions(-)
create mode 100644 "src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2501.js"
create mode 100644 "src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2502.js"
diff --git "a/docs/10.LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" "b/docs/10.LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md"
index 49b181b4..749b377e 100644
--- "a/docs/10.LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md"
+++ "b/docs/10.LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md"
@@ -73,4 +73,6 @@ Langs: c cpp csharp golang java javascript kotlin php python python3 ruby rust s
lists[i].length
的总和不超过 10^4
-<<< @/src/LeeCode/23.合并k个升序链表.js
\ No newline at end of file
+<<< @/src/LeeCode/23.合并k个升序链表.js
+<<< @/src/LeeCode/23.合并k个升序链表1.js
+<<< @/src/LeeCode/23.合并k个升序链表2.js
\ No newline at end of file
diff --git "a/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.js" "b/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.js"
index ad2aad86..10fad4df 100644
--- "a/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.js"
+++ "b/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.js"
@@ -1,7 +1,8 @@
/*
* @lc app=leetcode.cn id=23 lang=javascript
*
- * [23] 合并K个升序链表
+ * [23] 合并 K 个升序链表
+ * 递归
*/
// @lc code=start
@@ -17,29 +18,27 @@
* @return {ListNode}
*/
var mergeKLists = function (lists) {
- if (lists.length < 1) return null;
- if (lists.length === 1) return lists[0];
+ if (lists.length === 0) {
+ return null
+ }
- const hair = new ListNode(0, lists.shift());
- let p = hair, q, r;
- while (lists.length) {
- q = lists.shift();
- while (q) {
- if (p.next === null) {
- p.next = q;
- break;
- } else if (q.val <= p.next.val) {
- r = q.next;
- q.next = p.next;
- p.next = q;
- q = r;
- } else {
- p = p.next;
- }
- }
- p = hair;
+ return lists.reduce((acc, item) => {
+ const dummy = new ListNode()
+ let p = dummy
+ let l1 = acc
+ let l2 = item
+ while (l1 && l2) {
+ if (l1.val <= l2.val) {
+ p.next = l1
+ l1 = l1.next
+ } else {
+ p.next = l2
+ l2 = l2.next
+ }
+ p = p.next
}
- return hair.next
-};
+ p.next = l1 ? l1 : l2
+ return dummy.next
+ })
+}
// @lc code=end
-
diff --git "a/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2501.js" "b/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2501.js"
new file mode 100644
index 00000000..d09666be
--- /dev/null
+++ "b/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2501.js"
@@ -0,0 +1,46 @@
+/*
+ * @lc app=leetcode.cn id=23 lang=javascript
+ *
+ * [23] 合并K个升序链表
+ * 非递归
+ */
+
+// @lc code=start
+/**
+ * Definition for singly-linked list.
+ * function ListNode(val, next) {
+ * this.val = (val===undefined ? 0 : val)
+ * this.next = (next===undefined ? null : next)
+ * }
+ */
+/**
+ * @param {ListNode[]} lists
+ * @return {ListNode}
+ */
+var mergeKLists = function (lists) {
+ if (lists.length < 1) return null;
+ if (lists.length === 1) return lists[0];
+
+ const hair = new ListNode(0, lists.shift());
+ let p = hair, q, r;
+ while (lists.length) {
+ q = lists.shift();
+ while (q) {
+ if (p.next === null) {
+ p.next = q;
+ break;
+ } else if (q.val <= p.next.val) {
+ r = q.next;
+ q.next = p.next;
+ p.next = q;
+ q = r;
+ } else {
+ p = p.next;
+ }
+ }
+ p = hair;
+ }
+ return hair.next
+};
+// @lc code=end
+
diff --git "a/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2502.js" "b/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2502.js"
new file mode 100644
index 00000000..b951741e
--- /dev/null
+++ "b/src/LeeCode/23.\345\220\210\345\271\266k\344\270\252\345\215\207\345\272\217\351\223\276\350\241\2502.js"
@@ -0,0 +1,45 @@
+/*
+ * @lc app=leetcode.cn id=23 lang=javascript
+ *
+ * [23] 合并 K 个升序链表
+ * 非递归
+ */
+
+// @lc code=start
+/**
+ * Definition for singly-linked list.
+ * function ListNode(val, next) {
+ * this.val = (val===undefined ? 0 : val)
+ * this.next = (next===undefined ? null : next)
+ * }
+ */
+/**
+ * @param {ListNode[]} lists
+ * @return {ListNode}
+ */
+var mergeKLists = function (lists) {
+ if (lists.length === 0) {
+ return null
+ }
+
+ return lists.reduce((acc, item) => {
+ const dummy = new ListNode()
+ let p = dummy
+ let l1 = acc
+ let l2 = item
+ while (l1 && l2) {
+ if (l1.val <= l2.val) {
+ p.next = l1
+ l1 = l1.next
+ } else {
+ p.next = l2
+ l2 = l2.next
+ }
+ p = p.next
+ }
+ p.next = l1 ? l1 : l2
+ return dummy.next
+ })
+ }
+ // @lc code=end
+
\ No newline at end of file