【发布时间】:2025-11-25 22:50:01
【问题描述】:
问题是从给定的数组集合中计算非重叠数组对的数量(计算所有数组对,使其没有任何共同元素)。
例如给定,
a = [1,2,3]
b = [2,3,4]
c = [6,7,8]
d = [7,10,20]
以下对不重叠 (a,c), (a,d), (b,c), (b,d) 因为它们没有任何共同的元素,所以这个问题实例的答案是 4
我有一个 n^2 解决方案,它计算每个数组与每个其他数组的交集,如果交集为空集,则增加计数。
有没有有效的方法来解决这个问题? (优于n^2)
【问题讨论】:
-
只需要计算它们,而不是输出它们。 @trincot
-
@Richard 是的,你是对的。更新了描述
-
什么是
n? (工作量取决于数组的数量和长度。) -
如果数组最多有一个共同元素,我可以在 O(n) 中做到这一点,但是有多个可能的交叉点我看不到在不明确检查每一对的情况下避免重复计算的方法(其中总是最坏的情况 O(n^2))。
-
也许我们可以期待一堆alike questions
标签: algorithm