首页 > 解决方案 > kotlin:确定 2 个列表是否有任何共同元素的最佳方法是什么?

问题描述

找出两个列表是否至少有一个共同元素的最佳方法是什么?我正在尝试在 kotlin 中做到这一点,虽然这很容易,但我想探索哪种方法是最好的方法。

问题:

fun isAnyElementCommon(
    alist: List<String>,
    blist: List<String>
):Boolean

一个例子是:

= alist.intersect(blist).isNotEmpty()

但我认为找出所有常见值然后检查它是否为空是太多的处理

编辑

另一个是:

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

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

标签: listalgorithmperformancekotlinoptimization

解决方案


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

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

推荐阅读