spy*_*pyk 11 scala scala-collections
我想在Scala中实现一个函数,给定一组Ints将合并任何包含一个或多个公共元素的Set.
例如,给定:
def mergeSets(sets: Set[Set[Int]]): Set[Set[Int]] = ???
val sets = Set(Set(1,2), Set(2,3), Set(3,7), Set(8,10))
val mergedSets = mergeSets(sets)
Run Code Online (Sandbox Code Playgroud)
mergedSets将包含Set(Set(1,2,3,7),Set(8,10))
如果可能的话,在Scala中执行此操作的方法是什么?
最有效的方法是使用可变结构,但是你要求一种功能方式,所以这里是:
sets.foldLeft(Set.empty[Set[Int]])((cum, cur) => {
val (hasCommon, rest) = cum.partition(_ & cur nonEmpty)
rest + (cur ++ hasCommon.flatten)
})
Run Code Online (Sandbox Code Playgroud)
(未测试,用手机写的)
归档时间: |
|
查看次数: |
1499 次 |
最近记录: |