【发布时间】:2016-08-31 12:47:05
【问题描述】:
谁能帮助我从概念上理解以下哪些选项可供我使用:
我有一个 int 元素数组,我正在寻找一种方法来查看其中是否有重复元素。我试图牢记时间复杂度,并想要一个在O(n) 时间的解决方案。
考虑到这个特定的边界,我不能使用嵌套的 for 循环来遍历所有 n 个元素,因为这个数组可能包含数以万计的索引。
有什么想法或建议可以帮助我吗?
【问题讨论】:
-
如果你对它们进行排序 (O(n log n)),那么一旦它们被排序,你只需要比较相邻的项目。 (假设您正在寻找重复项。)
-
“这些匹配中的任何一个”是什么意思?配什么?你的意思是找到重复项?
-
是的,我正在寻找重复的元素。
-
如果你所有的整数都在一个相当有限的范围内,你可以通过一次 (O(n)) 并记录每个值的出现次数。
标签: java arrays arraylist time-complexity