【发布时间】:2015-10-31 05:24:24
【问题描述】:
我在一次技术面试中被问到以下问题:
如何从未排序的数组中删除重复项?
我正在考虑的一个选项:
- 使用数组中每个数字的频率创建一个哈希映射
- 遍历数组并在哈希映射中进行 O(1) 查找。如果频率 > 0,则从数组中删除数字。
有没有更有效的方法?
另一种选择
- 使用快速排序或归并排序对数组 O(nlog n) 进行排序
- 然后遍历数组并删除重复项
为什么选项 1 比选项 2 更好?
我不能使用任何已经完成工作的函数,比如 array_unique。
【问题讨论】:
-
“我不能使用任何已经完成工作的函数,比如 array_unique”——为什么?
-
这是他们给我的技术面试问题
-
如果你不能使用现有的功能,那么所有的语言标签都是错误的。
标签: arrays algorithm hashmap big-o