Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Similar to merge sort, for Lists[0, N-1], first to list[0,1], list[2, 3], ... list[n-2, n-1] sort,
Then, in order to generate a new linked list one at a time, you need to call the merge function of two sorted lists.
1ListNode *mergeklists (Vector<listnode *> &lists)2 {3 if(Lists.size () <=0)4 returnNULL;5 returnMerge_sort (lists,0, Lists.size ()-1); 6 }7 8ListNode *merge_sort (Vector<listnode *> &lists,intLintR)9 {TenListNode *head; One if(L <R) A { - intMid = (L + r)/2; -ListNode *left, *Right ; theleft =merge_sort (lists, L, mid); -right = Merge_sort (lists, Mid +1, R); -Head =merge (left, right); - } + Else - { +Head =Lists[l]; A } at returnhead; - } - -ListNode *merge (ListNode *l1, ListNode *L2) - { -ListNode *dummy1 =NewListNode (int_min), *dummy2 =NewListNode (int_min), *p, *R; inDummy1->next =L1; -Dummy2->next =L2; to +p =dummy1; - while(P->next! = NULL && Dummy2->next! =NULL) the { * if(P->next->val > dummy2->next->val) $ {Panax Notoginsengr = dummy2->Next; -Dummy2->next = r->Next; theR->next = p->Next; +P->next =R; A } thep = p->Next; + } - if(Dummy2->next! =NULL) $ { $P->next = dummy2->Next; -Dummy2->next =NULL; - } thep = dummy1->Next; - Delete dummy1;Wuyi Delete dummy2; the returnp; -}
Leetcode. Merge k Sorted Lists