定义子集中未包含的重叠元素或元素

时间:2017-10-23 11:31:13

标签: algorithm optimization set subset

我想检查哪种策略最有效地计算下面描述的问题

我有一套Q和两个子集L和R.我有三个案例。

1)L∩R!= 0.在这种情况下,我想得到重叠元素的数组。在下面的示例中,结果集将是R = {4,5}。

  Q = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  L = {0, 1, 2, 3, 4, 5, *, *, *, *}
  R = {*, *, *, *, 4, 5, 6, 7, 8, 9}

2)L∩R= 0.在这种情况下,我想得到Q \(L∪R)。在下面的示例中,结果集将是R = {4,5,6}。

  Q = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  L = {0, 1, 2, 3, *, *, *, *, *, *}
  R = {*, *, *, *, *, *, *, 7, 8, 9}

3)Q \(L∪R)= 0.在这种情况下,我想得到他们找到对方的索引。在下面的示例中,索引将为4。

  Q = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  L = {0, 1, 2, 3, 4, *, *, *, *, *}
  R = {*, *, *, *, *, 5, 6, 7, 8, 9}

1 个答案:

答案 0 :(得分:1)

如果L ∩ R != 0,那么我会:

选择两个最小的数组,并比较它们以找到共同的元素。

这将为你节省一个循环,它将导致O(n 2 ),而不是天真的O(n 3 )。

在另一种情况下,我看不出你将如何避免访问每个数组的每个元素。

注意:如果您使用数据结构,请使用哈希映射,这两种情况都将以线性时间进行分析。