题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类一维数组 * @return ListNode类 */ function mergeKLists( lists ) { // write code here if(lists.length === 0) { return null } if(lists.length === 1) { return lists[0] } const result = [] for( let i=0; i<lists.length-1; i+=2) { result.push(nodeSort(lists[i],lists[i+1])) } if(lists.length %2 !== 0 ) { result.push(lists[lists.length-1]) } return mergeKLists(result) } function nodeSort (head1,head2) { let p = new ListNode(1) let pNode = p let p1 = head1 let p2 = head2 while (p1 && p2) { if(p1.val <= p2.val) { p.next = p1 p1 = p1.next } else { p.next = p2 p2 = p2.next } p = p.next } if (p1) { p.next = p1 } if (p2) { p.next = p2 } return pNode.next } module.exports = { mergeKLists : mergeKLists };