我需要编写一个代码片段来比较多个数组并生成与这些数组中的数据匹配的集合,仅在数组 A 中生成数据集,但不在数组 B、C、D 中,在数组 B 中但不在 A 中,C,D,能够处理任意数量的数组(即动态循环)。代码应该使用 Scala 中的匿名函数(即不像 Java 中的常规数组循环)。
问问题
1254 次
1 回答
2
对我来说听起来像是家庭作业。到目前为止,最简单的方法是将数组 A 的内容放入 aSet
并使用删除操作。这将是O(n),其中n = \sum { |A|, |B|, |C|, ... }。以下解决方案适用于任意Iterable
,而不仅仅是Array
:
def compareArrays[A](arrs: List[Iterable[A]]) = arrs match {
case a :: tail => {
val set = a.foldLeft(Set[A]()) { _ + _ }
tail.foldLeft(set) { _ -- _ }
}
case Nil => Nil
}
于 2009-06-05T06:58:47.767 回答