力扣:23.合并 K 个升序链表

  1. 时间复杂度是 O(NlogK)O(NlogK)O(NlogK) N 个节点,K 个链表。
  2. 小根堆可以直接常数时间找到最小值,但是每次 pop 或者 push 需要 logk 的时间。
cpp 复制代码
class Solution {
public:
    struct cmp {
        bool operator() ( ListNode *a, ListNode *b ) {
            return a->val > b->val;
        }
    };
    ListNode* mergeKLists(vector<ListNode*>& lists) {
        priority_queue<ListNode*, vector<ListNode*>, cmp> heap;
        for ( auto head: lists ) if ( head ) heap.push( head );
        ListNode dummy;
        ListNode* cur = &dummy;
        while ( !heap.empty() ) {
            ListNode *minNode = heap.top();
            heap.pop();
            cur->next = minNode, cur = cur->next;
            if ( minNode->next ) heap.push( minNode->next );
        }
        return dummy.next;
    }
};
相关推荐
re林檎2 小时前
算法札记——4.27
算法
数据牧羊人的成长笔记2 小时前
逻辑回归与Softmax回归
算法·回归·逻辑回归
郑州光合科技余经理3 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
d111111111d6 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
Jiangxl~7 小时前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构
李伟_Li慢慢8 小时前
wolfram详解山峦算法
前端·算法
counting money8 小时前
prim算法最小生成树(java)
算法
澈2078 小时前
C++面向对象:类与对象核心解析
c++·算法
用户690673881928 小时前
基于无人机的单目测距系统,平均误差仅2.12%
算法