确定数字是否只在数组中出现一次
这是一个家庭作业问题,我已经考虑了很长一段时间,并提出了一些解决方案,但我认为存在更好的解决方案。
确定数组中是否存在仅出现一次的元素 (int) 的最快方法是什么?任何元素都可以出现任意次数。{3, 1, 4, 1, 4, 3} 将返回 false,而 {3, 1, 4, 1, 4, 1} 将返回 true(3 出现一次)。
我们只被允许使用我们已经学到的东西(所有基础知识,递归,哎呀,搜索和排序算法,包括快速排序),所以制作哈希表不是一种选择。
到目前为止,我想出的最好的实用解决方案是使用快速排序然后通过它进行排序(O(nlogn),我想出的最好的非实际解决方案是制作一个所有可能的int值大小的大数组,然后使用它的位置类似于哈希表(但该数组太大而无法实际实现)( O(n) )
有没有另一种(实用的)方法可以在O(n)时间内做到这一点?
编辑:刚刚从TA那里得到了一个答案,我听到的建议O(n)解决方案是一个不切实际的解决方案(与我建议的相同或相似),因此他们告诉我们不要使用它。我现在有99%的把握,最好的实际答案(没有哈希表)是O(nlogn)时间。