我想做一大块代码,直到数组1的至少一个元素等于数组2的元素中的一个。
我要求社区尽可能地分享最好的(最快的处理方式)来做到这一点“而”
总结:
while (none of the elements from arr1 is equal to any of arr2)
{
(code)
}
原因:在我的代码中,根据用户设置的某些尺寸,我的程序可能需要进行很多次n ^ 2复杂度比较,所以我正在寻找一种方法让它像我一样轻可以。
我很抱歉,如果这类问题不适合StackOverflow,请告诉我。
编辑:我没有提供有关阵列的信息。正如我所说,它的维度可能会根据用户选择的内容而有所不同,但每个人的大小应该在3到1000之间。两个整数数组。
他们的价值确实发生了变化,维度越大,发生的就越多。
答案 0 :(得分:0)
评论中提到了一个散列,我同意,它可以工作,但是非常依赖于大小。 O(n^2)
的开销在很多时候可以忽略不计。
否则,只需将arr1
的所有元素添加到哈希集中,然后遍历arr2
的元素以查看它们是否在其中。您将获得O(n)
时间。不过,老实说,除非您使用的是数十万甚至数百万个元素,否则我认为支出不会那么有形,但这取决于机器,而且我还没有亲自测试过。
C ++在标准中具有std :: unordered_set。如果您使用的是纯C语言,那么我肯定可以在线获得这些实现。