来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/merge-k-sorted-lists 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
解答
/*** 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}*/const findMinValChain = (lists) => {let min = Infinity,minIdx = -1;for (let i = 0; i < lists.length; i++) {const head = lists[i];if (head && min > head.val) {min = head.val;minIdx = i;}}return minIdx;}var mergeKLists = function(lists) {let head = new ListNode(),prev = head;while (lists.length) {let chainIdx = findMinValChain(lists),chainHead = lists[chainIdx];if (!chainHead) {lists.splice(chainIdx, 1);continue;}prev.next = chainHead;prev = prev.next;if (chainHead && chainHead.next) {lists[chainIdx] = chainHead.next;chainHead.next = null;} else {lists.splice(chainIdx, 1);}}return head.next;};
