* @lc app=leetcode id=23 lang=javascript
* [23] Merge k Sorted Lists
* https://leetcode.com/problems/merge-k-sorted-lists/description/
function mergeTwoLists(l1, l2) {
while (l1 !== null && l2 !== null) {
current.next = l1; // 把小的添加到结果链表
current = current.next; // 移动结果链表的指针
l1 = l1.next; // 移动小的那个链表的指针
* Definition for singly-linked list.
* function ListNode(val) {
* @param {ListNode[]} lists
var mergeKLists = function (lists) {
// 图参考: https://zhuanlan.zhihu.com/p/61796021
if (lists.length === 0) return null;
if (lists.length === 1) return lists[0];
if (lists.length === 2) {
return mergeTwoLists(lists[0], lists[1]);
const mid = lists.length >> 1;
for (let i = 0; i < mid; i++) {
for (let i = mid, j = 0; i < lists.length; i++, j++) {
return mergeTwoLists(mergeKLists(l1), mergeKLists(l2));