【问题标题】:Java - Efficient way to find duplicate elements [duplicate]Java - 查找重复元素的有效方法[重复]
【发布时间】:2016-08-31 12:47:05
【问题描述】:

谁能帮助我从概念上理解以下哪些选项可供我使用:

我有一个 int 元素数组,我正在寻找一种方法来查看其中是否有重复元素。我试图牢记时间复杂度,并想要一个在O(n) 时间的解决方案。

考虑到这个特定的边界,我不能使用嵌套的 for 循环来遍历所有 n 个元素,因为这个数组可能包含数以万计的索引。

有什么想法或建议可以帮助我吗?

【问题讨论】:

  • 如果你对它们进行排序 (O(n log n)),那么一旦它们被排序,你只需要比较相邻的项目。 (假设您正在寻找重复项。)
  • “这些匹配中的任何一个”是什么意思?配什么?你的意思是找到重复项?
  • 是的,我正在寻找重复的元素。
  • 如果你所有的整数都在一个相当有限的范围内,你可以通过一次 (O(n)) 并记录每个值的出现次数。

标签: java arrays arraylist time-complexity


【解决方案1】:

从您的T[] array 生成HashSet<T> set。 如果

set.size() != array.length

那么你有重复

使HashSet 具有O(n) 的复杂性。

不要忘记equalshashcode 覆盖T

【讨论】:

  • 非常适合我。感谢您的意见!
猜你喜欢
  • 2015-02-24
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 2020-02-27
  • 2021-08-31
  • 2016-11-28
  • 2022-01-25
相关资源
最近更新 更多