如何检查二维数组中是否有两个相同的对象

时间:2014-01-24 22:12:37

标签: arrays algorithm

所以我有一个数组,我想知道是否有两个相同的元素。

我的第一个想法是O(n^2)算法,我将每个元素与所有其他元素进行比较,但当然它并不是最优的。

我的第二个想法是对数组进行排序,然后只是比较相邻的元素,但这听起来不是完美的解决方案。

我想我只能梦见O(n),但至少O(n*log(n))有更快的方法吗? (当然,我非常喜欢O(n)解决方案。

编辑:我必须将此作为更复杂算法的一部分,因此我将不得不创建一个新数组并获得n*log(n)次的答案,因此我感觉不喜欢散列。

1 个答案:

答案 0 :(得分:4)

这基本上是 element distinctness problem ,除非您正在利用具有额外空间的散列解决方案,否则无法比O(nlogn)更好地解决。