力扣23.合并K个升序链表
力扣23.合并K个升序链表
-
因为所有链表都是升序
- 第一次取节点一定是某个链表的头节点
- 之后每次取 就一定是当前节点的下一个,或每个链表的最前面节点
- 所以在取节点之后 将其下一个节点加入队列作为补充
-
decltype函数:
- 自行推断类型 类似于auto
-
class Solution { public: ListNode* mergeKLists(vector<ListNode*>& lists) { auto cmp = [](const ListNode *a,const ListNode *b) -> bool { return a->val > b->val; }; priority_queue<ListNode*,vector<ListNode*>,decltype(cmp)> q; for(auto head:lists) if(head) q.push(head); ListNode dummyhead{}; auto cur = &dummyhead; while(!q.empty()) { auto node = q.top(); q.pop(); if(node -> next) q.push(node->next); cur->next = node; cur = cur->next; } return dummyhead.next; } };
原文地址:https://blog.csdn.net/Pisasama/article/details/140600318
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!