javascript - JavaScript 中 Map 和 For 循环的时间复杂度
问题描述
我为以下问题尝试了Map和for 循环。由于时间复杂度,我没有看到两者之间有太大的区别。
我认为 JavaScript Map 操作的复杂度是O(1),而 for 循环的复杂度是O(n)。
const withHash = (array, sum) => {
// complexity: O(n)
for (let i = 0; i < array.length; i++) {
const temp = sum - array[i];
// complexity: O(1)
if (HashMap.has(temp)) {
console.log(
"Pair with given sum " + sum + " is (" + array[i] + ", " + temp + ")"
);
}
HashMap.set(array[i], array[i]);
}
};
const withForLoop = (array, sum) => {
// complexity: O(n)
for (let i = 0; i < array.length; i++) {
const temp = array[i];
// complexity: O(n)
for (let j = 0; j < array.length; j++) {
const x = temp + array[j];
if (x === sum) {
console.log(
"Pair with given sum " + sum + " is (" + array[j] + ", " + temp + ")"
);
}
}
}
};
let HashMap = new Map();
const numbers = [3, 4, 5, 6, 7, 8, 12];
const sum = 15;
console.time();
withHash(numbers, 15);
console.timeEnd();
console.time();
withForLoop(numbers, 15);
console.timeEnd();
为什么尽管withForLoop方法 n 个正方形,但它给出了更快的结果?
解决方案
推荐阅读
- javascript - Azure:如何在传入的 blob/文件进入 blob 存储之前对其进行扫描?
- mongodb - 使用 update 和 upsert 插入重复项
- powershell - 如何从 PowerShell 模块检查命令行参数?
- angular - Mat-DatePicker - [(ngModel)] - 无法显示用户保存的日期
- hyperledger-fabric - Hyperledger Fabric 的磁盘数据目录是什么?
- json - 为什么显示未定义而不是对象 - (Angular HTTP 请求)
- multithreading - Shell 脚本中的并行处理或线程
- google-cloud-functions - 消息未在云功能中得到确认
- c# - 从 ASP MVC 中的 Application_End() 获取触发原因
- python - 创建了一个名为“keys.py”的文件,其中我有四个存储私有访问密钥字符串的变量