对称差分b/w未排序数组

Symmetric Difference b/w unsorted arrays

本文关键字:排序 数组 对称      更新时间:2023-10-16

我在准备面试的时候就尝试过解决这个问题。问题如下:

求数组

输入:两个整数数组

输出:一个整数数组只出现在一个(不是两个)数组中

测试用例:

输入:

           [ 1, 7, 8, 2, 4, 5 ]
           [ 3, 5, 1, 7, 6, 9 ]

输出 :

           [ 8, 2, 4, 3, 6, 9 ]

我想到的方法是

  • 运行两个循环,找到共同元素然后打印其余部分的蛮力- T=O(n2)

  • 对两个数组进行排序,并遵循与MergeSort的Merge Procedure - T=O(nlogn)相似的策略

我想不出O(n)中的任何方法。有没有时间复杂度更低的算法来解决这个问题?

您还可以在c++/java

中建议一些特定于语言的库方法。

最快的方法是将第一个Array的所有值放入HashTable,然后执行contains()以查看第二个Array的值是否存在。这将为您提供O(n)

的预期时间复杂度。