我的一个 friend 在面试中被问到这个问题-
- 你给了两个整数数组,每个数组的大小都是 10。
- 两者都包含 9 个相等的元素(比如 1 到 9)
- 只有一个元素不同。
您将如何找到不同的元素?您可以采取哪些不同的方法?
One simple but lengthy approach would be - sort both arrays,go on comparing each element,on false comparison, you'll get your result.
那么对此有哪些不同的方法呢?按照面试中的预期指定逻辑。不期望特定语言的特定代码。伪代码就足够了。
(请为每个答案提交一种方法)
My purpose of asking this question is, its OK when array sizes are small.But when array size increases, you must think of a very efficient n faster way.Its never desirable to use comparisons in such case.
最佳答案
如果您需要它来扩展,那么我会使用世界上众多 Set 实现之一。比如Java的HashSet。
抛出 Set 中第一个数组的所有内容。然后,对于第二个数组的每个成员,如果它包含在Set中,则将其移除;否则将其标记为 Unique #2。在这个过程之后,集合中最后剩下的成员是 Unique #1。
我可能会这样做,即使是在面试时,甚至对于简单的十元素数组也是如此。人生苦短,无法花时间去寻找巧妙的方法来攀登一堵完美无缺的门。
关于algorithm - 从两个数组中区分额外的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1590405/