繁体   English   中英

空间复杂度中的 O(1) 与 O(n)

[英]O(1) vs O(n) in Space Complexity

O(1)
function sum(arr) {
   let total = 0;
   for (let i = 0; i < arr.length; i++) {
        total += arr[i]; 
    }
    return total;
}
function double(arr) {
   let newArr = [];
   for (let i=0; i<arr.length; i++) {
       newArr.push(2 * arr[i]);
       }
   return newArr;
}

所以我使用 javascript 研究算法。 我认为第一个是 O(1) 因为它有恒定的空间。 之所以有常数空间,是因为数字数据类型在 javascript 中是常数空间。 第二个创建一个新数组,该数组通常为 O(n),其空间复杂度为 O(n)。 我理解正确吗?

你是对的,虽然它不仅仅是第二个代码创建了一个新数组 - 你必须查看数组包含的内容。 在这里,在每次迭代中,都会将一个新数字推送到数组中。 因此,如果您在arr参数中有 N 个项目,那么在newArr中也将有 N 个数字。

一个数组 * N 个数字意味着使用了 O(n) 空间。

如果将arr更改为包含其他更复杂的内容,例如额外的子数组,则空间复杂度可能会更大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM