我正在尝试编写一个使用可变位集保持状态的回溯算法,它工作得很好,但我希望它运行得更快!
关键是给定了两个 mutable.BitSet alpha 和 beta 我需要计算 alpha 的任何位是否在 beta 中设置,即按位 AND。我不需要结果集只需要知道交集是否为NonEmpty
(alpha intersect beta).nonEmpty
或
(alpha & beta).nonEmpty
但是这两个都构建了一个集合,然后测试其大小...我真的只需要一个 bool 值,并且希望避免构建中间集的成本。
有更好的方法吗?
TIA 尼瓦格
最佳答案
引用API docs ,您可以使用 find
和 contains
方法。
alpha find (beta.contains) isDefined
或
更好的是,使用 exists
方法。
alpha exists (beta.contains)
或
甚至更短更好,使用 BitSet 的 apply
方法这相当于它的 contains
方法。
alpha exists beta
关于performance - Scala mutable.BitSet 交集性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19065230/