我的一个朋友在一次采访中被问到这个问题-
您将如何找到不同的元素?您可以采取哪些不同的方法?
一种简单但冗长的方法是-对两个数组进行排序,对每个元素进行比较,如果进行虚假比较,您将得到结果。
那么有什么不同的方法呢?在面试中指定逻辑,如预期的那样。不期望使用特定语言的特定代码。伪代码就足够了。
(请为每个答案提交一种方法)
我问这个问题的目的是,当数组大小很小时可以,但是当数组大小增加时,您必须考虑一种非常有效的n更快的方法,在这种情况下使用比较是永远不希望的。
如果您需要按比例缩放,那么我将使用世界上许多Set实现之一。例如,Java的HashSet。
将所有第一个数组扔到集合中。然后,对于第二个数组的每个成员,如果它包含在Set中,则将其删除;否则,将其删除。否则将其标记为唯一#2。此过程之后,集合中最后剩余的成员是唯一#1。
我可能会这样做,即使是在访谈中,甚至对于简单的十元素数组也是如此。当一扇完美的门在里面时,生活太短了,无法花时间去寻找一种巧妙的方法来缩放墙壁。