空间复杂度和时间复杂度一样,同样也是一个函数,用大O表示,例如O(1)、O(n)等。
空间复杂度的具体作用主要是算法在运行过程中临时占用存储空间大小的度量。
简单的说就是衡量你写的代码在运行时占用的内存的多少。
看下面的代码来进行简单理解:
let i = 0;
i += 1;
上面的代码空间复杂度为O(1),为什么空间复杂度为O(1)呢,因为上面的代码创建了一个变量,在内存当中仅占用一个空间。
再来看下面的代码:
const list = [];
for (let i = 0; i < n; i++) {
list.push(i);
}
上面的代码空间复杂度为O(n),代码中首先创建了一个数组,并且向数组中添加了n个元素,对应的占用内存为n个单元空间,所以时间复杂度为O(n)。
再来看下面的代码,
const matrix = [];
for (let i = 0; i < n; i++) {
matrix.push([]);
for (let j = 0; j < n; j++) {
matrix[i].push(j);
}
}
上面代码的时间复杂度为O(n^2)。
上面代码本质来说形成了一个矩阵(也就是几行几列的这种结构),站在数组的层面说也就是形成了一个二维数组。