javascript - 如何将列表更改为具有布尔值的字典
问题描述
我有以下代码。在这种情况下,我有一个大 O(n^2)。如何使用另一个 Big O 表示法以更好的方式编写此代码?如果列表中的一个值与另一个值匹配,则代码假定返回 True,否则它应该返回 False。
l1 = [1, 2, 3, 4]
l2 = [1, 6, 7, 8]
def common_inputs(list1, list2):
for i in l1:
for j in l2:
if i == j:
return True
else:
return False
print(common_inputs(l1, l2))
我有一个例子,但是是用 JavaScript 编写的,不能理解那么多。
array1 = [1, 2, 3, 4]
array2 = [1, 6, 7, 8]
function commonInputs(arr1, arr2) {
let map = {};
for (let i=0; i < arr1.length; i++) {
if (!map[i]) {
const item = arr1[i];
map[item] = true;
}
}
for (let j=0; j < arr2.length; j++) {
if (map[arr2[j]]) {
return true;
}
}
return false;
}
任何建议将被认真考虑。提前致谢。
解决方案
测试两组是否相交的python习语是
intersect = not set(a1).isdisjoint(a2)
在 javascript 中没有这样的东西,所以你必须循环第二个列表:
function intersect(a1, a2) {
let s1 = new Set(a1)
return a2.some(x => s1.has(x))
}
推荐阅读
- python - 浏览器支持的 Django 错误处理
- python - 解析带有日期标题和多个条目的文本文件
- vue.js - Vuetify 徽章未显示 - 在编译代码中注释掉
- apache-poi - 如何使用 Apache POI 或 Docx4j 从 docx 文件中删除所有评论?
- javascript - 如何在 Semantic-react-ui 的模态屏幕上显示弹出窗口?
- android - popUpTo 似乎在导航组件中不起作用
- python - 如何绕过稀疏矩阵的慢分组?
- java - 如何将 bufferedImage 加载为 opengl 纹理?
- c++ - boost 编译生成 libboost_python 而不是 boost_python
- javascript - 如何检查属性对象是否存在?jQuery