【发布时间】:2013-01-26 10:12:31
【问题描述】:
我有这个问题:
给定两个大小为 n 的排序列表(存储在数组中),求 O(log n) 计算并集中第 n 个最大元素的算法 两个列表。
我可以看到这里可能有一个技巧,因为它需要第 n 个最大的元素,并且数组的大小也是 n,但我不知道它是什么。我在想我可以适应计数排序,这行得通吗?
【问题讨论】:
-
2 个列表的并集如何工作?
-
@Gumbo:如果数组大小 > n,并假设“2 个列表的并集”只是意味着将所有列表放在一起,那么我们总是可以将数组修剪为大小 n(由于排序的属性)。
-
O(n)是天真的方法:只需比较 2 个列表中的最小元素,推进指针并计数。 -
如果数组是排序的和不相交的,那么它可能在
O(log n)(我在考虑二进制搜索)。否则 - 没有机会。 -
@Joe:你能回答我的第一个问题吗?我们很困惑
union在这里是指集合的联合,它删除重复元素,还是只是将两个列表放在一起?
标签: algorithm language-agnostic