【leetcode100-034】【链表/优先队列】合并k个升序链表

【题干】

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

【思路】

  • 其实就是多路归并
  • 用一个优先队列简化k个头部的比较和选最小节点的过程
  • 然后就只剩一些细节处理啦
  • 都没啥好写的今天这题。。。

【题解】

class Solution {
public:
    struct Status {
        int val;
        ListNode *ptr;
        bool operator < (const Status &rhs) const {
            return val > rhs.val;
        }
    };

    priority_queue <Status> q;

    ListNode* mergeKLists(vector<ListNode*>& lists) {
        for (auto node: lists) {
            if (node) q.push({node->val, node});
        }
        ListNode head, *tail = &head;
        while (!q.empty()) {
            auto f = q.top(); q.pop();
            tail->next = f.ptr; 
            tail = tail->next;
            if (f.ptr->next) q.push({f.ptr->next->val, f.ptr->next});
        }
        return head.next;
    }
};

相关推荐

  1. LeetCode】热题100合并K升序

    2024-01-08 23:36:02       35 阅读
  2. LeetCode热题100】【合并 K 升序

    2024-01-08 23:36:02       33 阅读
  3. LeetCode-23. 合并 K 升序

    2024-01-08 23:36:02       43 阅读
  4. LeetCode-23 合并 K 升序

    2024-01-08 23:36:02       64 阅读
  5. LeetCode 23 合并 K 升序

    2024-01-08 23:36:02       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 23:36:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 23:36:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 23:36:02       82 阅读
  4. Python语言-面向对象

    2024-01-08 23:36:02       91 阅读

热门阅读

  1. 用Python实现组件化大屏

    2024-01-08 23:36:02       62 阅读
  2. C语言中的关键字与标识符详解

    2024-01-08 23:36:02       58 阅读
  3. 列表如何查找索引与字符串

    2024-01-08 23:36:02       42 阅读
  4. Qt 中如何将图片转化为yuv420p

    2024-01-08 23:36:02       58 阅读
  5. 精准掌控 Git 忽略规则:定制化 .gitignore 指南

    2024-01-08 23:36:02       66 阅读
  6. 【设计模式】工厂模式

    2024-01-08 23:36:02       69 阅读