list - kotlin:确定 2 个列表是否有任何共同元素的最佳方法是什么?
问题描述
找出两个列表是否至少有一个共同元素的最佳方法是什么?我正在尝试在 kotlin 中做到这一点,虽然这很容易,但我想探索哪种方法是最好的方法。
问题:
fun isAnyElementCommon(
alist: List<String>,
blist: List<String>
):Boolean
一个例子是:
= alist.intersect(blist).isNotEmpty()
但我认为找出所有常见值然后检查它是否为空是太多的处理
编辑
另一个是:
= alist.any{ blist.contains(it) }
我知道这些解决方案。我只是想知道是否有更好的方法来解决这个问题。如果没有,那也没关系。我正在寻找一种低复杂性和低内存占用的解决方案。此外,在 kotlin 中,大多数情况都由一些辅助扩展函数覆盖。所以也许如果有这样的事情。我想知道。
解决方案
要将其降低到O(n),请先将一个列表转换为 Set。
fun isAnyElementCommon(
aList: List<String>,
bList: List<String>
):Boolean {
val aSet = aList.toSet()
return bList.any { it in aSet }
}
推荐阅读
- c - 如何使用带指针的乘法运算符?
- c# - 如何在 C# 中将 Base64 字符串转换为视频
- google-apps-script - 我必须发送电子邮件从某些列中获取数据。如果电子邮件重复,我只想发送一封电子邮件,其中包含其他单元格中的值
- powershell - Out-GridView 在仅显示选定属性时返回完整对象
- amazon-web-services - 亚马逊 alb 和基本身份验证
- java - 我如何单击按钮来创建页面 selenium webdriver
- python - selenium.common.exceptions.WebDriverException:消息:GeckoDriver Firefox 和 Selenium 在 Raspberry Pi debian 上的连接被拒绝错误
- r - 创建一个函数以在 R 中自动构建特定图
- reactjs - 什么应该触发获取反应?用户操作、状态变化或缺少有效数据?
- html - 如何在 bootstrap-4 中删除 div 的上边距