【发布时间】:2022-04-12 14:29:17
【问题描述】:
找出两个列表是否至少有一个共同元素的最佳方法是什么?我正在尝试在 kotlin 中执行此操作,虽然这很容易,但我想探索哪种方法是最好的方法。
问题:
fun isAnyElementCommon(
alist: List<String>,
blist: List<String>
):Boolean
一个例子是:
= alist.intersect(blist).isNotEmpty()
但我认为找出所有公共值然后检查它是否为空
编辑
另一个是:
= alist.any{ blist.contains(it) }
我知道这些解决方案。我只是想知道是否有更好的方法来解决这个问题。如果没有,那也没关系。我正在寻找一种低复杂性和低内存占用的解决方案。此外,在 kotlin 中,大多数情况都由一些辅助扩展函数覆盖。所以也许如果有这样的事情。我想知道。
【问题讨论】:
-
您可以经典地迭代一个列表并检查另一个列表是否包含当前元素,然后在第一个匹配项处停止。对于最坏的情况(没有共同元素)也将进行大量处理。也许比较两个想法的表现......
-
如果您想优化时间,请使用地图/字典。如果空间更重要,对 O(NlogN) 使用排序和二进制搜索
-
@ShridharRKulkarni 不,唯一好的答案只能以一种方式解决。评论有更好的解决方案,但不是答案的形式
标签: list algorithm performance kotlin optimization