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