025:合并K个升序链表

LeetCode 23 https://leetcode.cn/problems/merge-k-sorted-lists/description/ 难度:困难 本题是最小堆的题目。首先将 k 个链表的头节点加入堆,每次在链表中插入堆顶元素,再把堆顶元素的下一个元素入堆。 需要注意的是最小堆的声明方式。a > b(greater)是最小堆,a < b(less) 是最大堆。STL 的优先队列默认是最大堆。 auto cmp = [](const ListNode* a, const ListNode* b) { return a->val > b->val; }; priority_queue<ListNode*, vector<ListNode*>, decltype(cmp)> pq; 时间复杂度:O(Llogm),其中 m 为 lists 的长度,L 为所有链表的长度之和。 空间复杂度:O(m)。堆中至多有 m 个元素。 ...

六月 29, 2025 · Cassius