我知道我们可以用两种方法从 n 个未排序的整数中找到 k 个最大的数:
- 使用类似于快速选择的算法来找到第 k 大的数字,然后我们可以得到 k 个最大的数字。时间复杂度为 O(n),空间复杂度为 O(n)
- 使用堆来存储 k 个最大的数字,并迭代遍历 n 个整数,然后将适当的整数添加到堆中。时间复杂度为 O(nlogk),空间复杂度为 O(k)
假设这 n 个整数都在流中,我们没有随机访问它们的能力。
我想知道是否有可能以 O(n) 的时间复杂度和 O(k) 的空间复杂度从 n 个未排序的整数中找到 k 个最大的数?