【发布时间】:2015-10-24 16:08:26
【问题描述】:
我无法通过互联网找到我的问题的解决方案。
我有一个包含正数和负数的整数数组。如下所示
int arr[] = {56, 1, -1, 89, 89, 7 ,0, 5, 5, 56, 0,9 22, 33,67, 7, -1}
我需要找到数组中的所有重复项。 需要显示的输出(请注意保持顺序)如下:
56 -1 89 7 0 5
我知道可以在 O(n) 时间内使用哈希找到重复项。但是我在维持秩序方面遇到了问题。 另外我不太了解 C++ 标准哈希。
任何人都可以建议我,如何在 C++ 中做到这一点。允许使用 STL。
【问题讨论】:
-
我投票结束这个问题,因为 Stack Overflow 不是代码编写服务。
-
我会否决它,但我的票已经用完了:(
-
除了@πάνταῥεῖ的反对,你的问题也不清楚。有几种替代解决方案是可能的,但取决于额外的约束,例如:输入数组可以修改吗?如果没有,我们可以使用多少额外的空间?时间复杂度要求是什么:微不足道的 O(n^2) 可以接受吗?等等。
-
不应修改初始数组。输出应放置在另一个数组中。时间复杂度小于 O(n^2)。寻找空间复杂度最小的最优解。
-
@MartinJames:OP 改变了问题,不再仅仅要求代码。现在它只是要求一种算法按照首次出现的顺序生成重复列表,而不是按照重复检测的顺序。
标签: c++ arrays algorithm duplicates hashtable