处理工会,子集和超集斯卡拉
-
11-09-2019 - |
题
我需要编写一个代码段,将比较多个阵列和产生匹配这些阵列中的数据,该组,产生数据只在阵列的一组,但不是在阵列B,C,d,数组B中,但不是在A,C,d,能够处理任何数量的阵列(即,动态地循环)。该代码应利用匿名函数Scala中(即,不喜欢的规则阵列中的Java循环等)。
解决方案
听起来像是功课我。到目前为止,要做到这一点最简单的方法是数组A的内容扔进Set
并使用删除操作。这将是 O(n)的其中名词 = \ {总和| 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
}
不隶属于 StackOverflow