2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
即使代码运行速度很快,但如果因为占用了所有随机存取存储器而在处理一百万个输入时崩溃,它仍然是有缺陷的代码。这就是空间复杂度。
⚡ 什么是空间复杂度?
它衡量算法相对于输入大小所使用的内存量——用大O表示法表示。
📦 辅助空间(我们衡量的内容)
超出输入数据之外的额外内存——包括变量、数组、递归栈。
📊 常见的空间复杂度
O(1) — 常数空间
function sum(arr) {
let total = 0; // 无论数组大小如何,只有1个变量
for (let x of arr) total += x;
return total;
}
O(n) — 线性空间
function copyArray(arr) {
return [...arr]; // 新数组随输入增长
}
O(n) — 递归栈
function factorial(n) {
if (n === 1) return 1;
return n * factorial(n - 1); // 调用栈上有n个帧
}
⚖️ 时间与空间的权衡
| 方法 | 时间 | 空间 |
|---|---|---|
| 缓存结果 | O(1) 查找 | O(n) 存储 |
| 重新计算 | O(n) | O(1) |
| 原地排序 | 相同 | O(1) |
| 归并排序 | O(n log n) | O(n) 额外空间 |
🎯 面试技巧
务必说明两种复杂度:“时间复杂度 O(n),空间复杂度 O(1)”——这展示了全面的思考。
比特文数据结构与算法系列第5部分。最初发布于 bitveen.com
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。