1. 问题:
有k个已经排好序的std::list, 把它们合并成一个大的排好序的std::list.
例如有以下3个列表:
1->3->5
4->6
2->7
输出:1->2->3->4->5->6->7
2. 思路
本文尽量说明思考的过程,而不是直接给出结果。争取达到“授人以渔”的效果。
下面分析能想到的算法, 顺带分析时间复杂度,假设有k个列表,每个list长度为n:
1). 前两个直接使用std::list.merge合并,结果和第三个merge,再和第四个merge,直到最后一个。
Complexity
At most std::distance(begin(), end()) + std::distance(other.begin(), other.end()) -

订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



