Use merge, looply merge the from the queue.
1 /**2 * Definition for singly-linked list.3 * struct ListNode {4 * int val;5 * ListNode *next;6 * ListNode (int x): Val (x), Next (NULL) {}7 * };8 */9 classSolution {Ten Public: OneListNode *merge (ListNode *l1, ListNode *L2) { A if(!L1)returnL2; - if(!L2)returnL1; -ListNode *result; the if(L1->val < l2->val) { -result =L1; -Result->next = Merge (l1->Next, L2); -}Else { +result =L2; -Result->next = merge (L1, l2->next); + } A returnresult; at } -ListNode *mergeklists (Vector<listnode *> &lists) { - intLen = Lists.size (), current =Len; - if(len = =0)returnNULL; -Queue<listnode *>Q; - for(inti =0; i < Len; i++) { in Q.push (Lists[i]); - } to while(Current >1) { +ListNode *L1 =Q.front (); - Q.pop (); theListNode *L2 =Q.front (); * Q.pop (); $ Q.push (merge (L1, L2));Panax Notoginsengcurrent--; - } the returnQ.front (); + } A};
Leetcode–refresh–merge k Sorted Lists