合并k个已排序链表
合并k个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * * @param lists ListNode类一维数组 * @return ListNode类 */ function mergeKLists( lists ) { // write code here var result = mergeTwoLists(lists[0],lists[1]) if(lists.length>2){ for(var i=2;i<lists.length;i++){ result = mergeTwoLists(result,lists[i]) } } return result } function mergeTwoLists( l1 , l2 ) { // write code here if(l1 == null) { return l2 } if(l2 == null) { return l1 } var head={} var current = head while(l1&&l2){ if(l1.val<l2.val){ current.next = l1 current = current.next l1 = l1.next }else{ current.next = l2 current = current.next l2 = l2.next } } while(l1){ current.next =l1 current = current.next l1=l1.next } while(l2){ current.next =l2 current = current.next l2=l2.next } return head.next } module.exports = { mergeTwoLists : mergeTwoLists, mergeKLists : mergeKLists };
链表算法 文章被收录于专栏
链表相关算法