1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| ListNode* mergeKLists(vector<ListNode*>& lists) { auto cmp = [](ListNode* a, ListNode* b){ return a->val > b->val;}; priority_queue<ListNode*,vector<ListNode*>,decltype(cmp)> pq(cmp); ListNode* newnode = new ListNode(0); ListNode* p = newnode; for(auto head:lists){ if(head==nullptr) continue; pq.push(head); }
while(!pq.empty()) { ListNode* topnode = pq.top(); pq.pop(); p->next = topnode; if(topnode->next != nullptr) pq.push(topnode->next); p = p->next; } Listnode* ret = newnode->next; delete newnode; return ret; }
|