小编典典

从两个数组中区分出多余的元素?

algorithm

我的一个朋友在一次采访中被问到这个问题-

  • 您给了两个整数数组,每个数组的大小为10。
  • 两者都包含9个相等的元素(例如1到9)
  • 只有一个元素是不同的。

您将如何找到不同的元素?您可以采取哪些不同的方法?

一种简单但冗长的方法是-对两个数组进行排序,对每个元素进行比较,如果进行虚假比较,您将得到结果。

那么有什么不同的方法呢?在面试中指定逻辑,如预期的那样。不期望使用特定语言的特定代码。伪代码就足够了。

(请为每个答案提交一种方法)

我问这个问题的目的是,当数组大小很小时可以,但是当数组大小增加时,您必须考虑一种非常有效的n更快的方法,在这种情况下使用比较是永远不希望的。


阅读 369

收藏
2020-07-28

共1个答案

小编典典

如果您需要按比例缩放,那么我将使用世界上许多Set实现之一。例如,Java的HashSet。

将所有第一个数组扔到集合中。然后,对于第二个数组的每个成员,如果它包含在Set中,则将其删除;否则,将其删除。否则将其标记为唯一#2。此过程之后,集合中最后剩余的成员是唯一#1。

我可能会这样做,即使是在访谈中,甚至对于简单的十元素数组也是如此。当一扇完美的门在里面时,生活太短了,无法花时间去寻找一种巧妙的方法来缩放墙壁。

2020-07-28