我们需要检查2个数组是否相似。元素也可以重复。例如,A = {2,3,4,5,6,6}和B = {3,6,2,4,6,5}是相似的。
我有一个幼稚的解决方案:
foreach i:int in arr1 foreach j:int in arr2 { if(i == j) j = -1; }
现在,如果j的所有元素都是-1,那么我们可以说2个数组是相似的。有人可以给出一个无法解决此问题的测试用例吗(我希望它应该可以使用!)?
也是O(n ^ 2)。我们可以做得更好吗?不允许排序和散列。
您可以使用从其中之一构建的二进制搜索树。现在遍历另一个,检查该值是否已经在二进制搜索树中。这个在O(nlgn)中运行并使用O(n)空间。