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