algorithm - 从两个数组中区分额外的元素?

标签 algorithm arrays data-structures logic

我的一个 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/

相关文章:

javascript - Vue.js - 将新数据添加或设置到存储中的数组

algorithm - 用于查找倒排索引中乱序值数组的交集的良好数据结构?

c++ - STL 的 'partial_sum' 有什么实际用途?

string - 为什么我们不能一次性可靠地测试回文

java - 需要数组,但已找到(类名)

data-structures - 如何在没有头指针的情况下找到单链表的前一个节点

c++ - 如何使数据结构在 C++ 中持久化?

algorithm - 直线与凸集的交集

c++ - 找出平均比较次数

java - 将数组交换到其原始状态