【发布时间】:2016-03-08 20:56:19
【问题描述】:
好的,所以我需要设计以下算法(无需代码,只需步骤):
给定两个集合 A 和 B,长度分别为 m 和 n,其中每个集合中的数字是不同的、未排序的和 m<n。计算两个集合的交集和并集,在任一结果中都没有任何重复值。该算法应该在 O(mlog(n)) 时间内工作。
我很难找出具有如此时间复杂度的算法。最初,我想连接两个未排序的数组,然后对其执行合并排序并删除重复项,但这超出了很多复杂性。
【问题讨论】:
-
这对于普通的无序数组是不可能的。想象一个单项 A 被插入到一个大数组 B 中,那么您将至少在线性 (
O(n)) 时间内检查 B 的每个条目一次。当然,对于存储在 in 数组中的哈希表,您平均可以在O(m+n)时间内完成,这是否允许? -
嗯,我不确定。明天我会和我的教授一起去办公时间,看看她希望它如何发生,因为我同意这似乎不太可能。
标签: algorithm set time-complexity theory array-algorithms