Leetcode 23. 合并 K 个升序链表

文章目录

  • 题目
  • 代码(首刷看解析,lambda优先队列)

题目

Leetcode 23. 合并 K 个升序链表_第1张图片
Leetcode 23. 合并 K 个升序链表

代码(首刷看解析,lambda优先队列)

 */
class Solution {
public:
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        auto cmp = [](ListNode* a, ListNode* b) { return a->val > b->val; };
        priority_queue<ListNode*, vector<ListNode*>, decltype(cmp)> q(cmp);
        for(auto& node : lists) {
            if(node)    // 防止插入空指针
                q.push(node);
        }
        auto head = new ListNode(0);
        auto p = head;
        while(!q.empty()) {
            p->next = q.top();
            p = p->next;
            q.pop();
            if(p->next) 
                q.push(p->next);
        }
        return head->next;
    }
};

你可能感兴趣的:(Leetcode专栏,链表,leetcode,数据结构)