Logic 实现两个阵列比较的最佳逻辑

Logic 实现两个阵列比较的最佳逻辑,logic,combinations,permutation,Logic,Combinations,Permutation,我有两个数组-arr1和arr2,在这里两个数组都有一些公共项和许多不常见项,首先应该从两个数组中删除公共项 因此,对于arr 1中的每个不常见项,可能是arr 2中两个或多个值的总和,反之亦然。如果找到总和,则必须从相应数组中删除这些值。最后,输出应该是两个数组上不匹配的值   我需要一个逻辑,在这里我可以以更快的方式进行计算。我不会给出实现您的逻辑的代码,但我很乐意为您指出正确的方向 我在C++中编码,所以我会对此进行回答。如果你想要一种不同的语言,我相信你可以自由选择 要删除公共元素,请执

我有两个数组-arr1和arr2,在这里两个数组都有一些公共项和许多不常见项,首先应该从两个数组中删除公共项

因此,对于arr 1中的每个不常见项,可能是arr 2中两个或多个值的总和,反之亦然。如果找到总和,则必须从相应数组中删除这些值。最后,输出应该是两个数组上不匹配的值  


我需要一个逻辑,在这里我可以以更快的方式进行计算。

我不会给出实现您的逻辑的代码,但我很乐意为您指出正确的方向

我在C++中编码,所以我会对此进行回答。如果你想要一种不同的语言,我相信你可以自由选择

要删除公共元素,请执行以下操作:

首先对数组
arr1
arr2
进行排序。然后对它们做一个测试。这将有效地在线性时间内运行。然后从中创建两个,例如
set1
set2

删除与另一个数组中的元素相加的对的步骤

为此,您需要遍历
arr1
中所有可能的元素对,并检查
set2
中是否存在这对元素的总和。对于
arr2也要这样做,必要时拆下该元件

这可以在O(n2)中完成。如果您不想创建额外的集合,您可以随时用性能换取内存,只需在
arr1
对之间循环,并通过执行二进制搜索来检查
arr2
中的和。
然后,时间复杂度可能上升到O(n2 log(n))

到目前为止你试过什么?从目前的情况看,你似乎希望我们为你解决整个问题,但不清楚你需要什么比我们更快