多个有序链表合并排序
https://leetcode.com/articles/merge-k-sorted-list/#
思路
1.最初版代码中每次比较k组中最小的元素,选择最小的那个。最小的那组指针迭代后继续比较。
2.通过优先队列的方法,每次比较的依旧是k个数,但优先队列采用的是最小堆,所以每次插入的时间复杂度为O(logk),一共要插入的个数为所有元素的个数。时间复杂度为O(nlogk)。
将所有元素按组插入优先队列中时间复杂度为O(nlogn)高于上述方法
3.基础方法merge两个数组。两两merge来减少merge的次数。(此方法未实践)
关于优先队列
struct cmp{
bool operator()(ListNode * l1,ListNode * l2)
{
return l1->val > l2 -> val;
}
};
priority_queue<ListNode *,vector<ListNode *> ,cmp >q;
push,pop(没有