kotlin:确定两个列表是否有共同元素的最佳方法是什么?

Moz*_*ath 0 algorithm optimization performance list kotlin

查找 2 个列表是否至少有一个共同元素的最佳方法是什么?我正在尝试在 kotlin 中执行此操作,虽然这很简单,但我想探索哪种是执行此操作的最佳方法。

问题:

fun isAnyElementCommon(
    alist: List<String>,
    blist: List<String>
):Boolean
Run Code Online (Sandbox Code Playgroud)

一个例子是:

= alist.intersect(blist).isNotEmpty()

但我认为处理太多,无法找出所有共同值,然后检查它是否为空

编辑

另一个是:

= alist.any{ blist.contains(it) }

我知道这些解决方案。我只是想知道是否有更好的方法来解决这个问题。如果没有,那也没关系。我正在寻找一种低复杂性和低内存占用的解决方案。此外,在 kotlin 中,大多数情况都由一些辅助扩展函数涵盖。所以也许如果有这样的事情。我想知道。

Ten*_*r04 7

要将其降低到O(n),请首先将一个列表转换为 Set。

fun isAnyElementCommon(
    aList: List<String>,
    bList: List<String>
):Boolean {
    val aSet = aList.toSet()
    return bList.any { it in aSet }
}
Run Code Online (Sandbox Code Playgroud)