(✪ω✪) 曼波来用超有趣的方式讲解复杂度啦!准备接收知识魔法吧~(ノ>ω<)ノ
时空复杂度就像做家务的【效率报告单】!(๑˃̵ᴗ˂̵)و
妈妈让你打扫房间时:
- 时间成本 = 花了多少分钟
- 空间成本 = 用了多少储物箱
🕒 时间复杂度大揭秘
哦呜(° ロ °)!曼波觉得指数级要小心!
当n=30时:
- O(n²) = 900次操作(可以接受)
- O(2^n) ≈ 10亿次(电脑要爆炸啦!💥)
📦 空间复杂度小课堂
实战例子!(≧∇≦)/
// O(n)时间 + O(1)空间
function findMax(arr) {
let max = arr[0]; // 1个变量 ✔️
for (let num of arr) { // 循环n次 ✔️
if (num > max) max = num;
}
return max;
}
// O(n²)时间 + O(n²)空间 😱
function badExample(n) {
let matrix = [];
for(let i=0; i<n; i++){
matrix[i] = [];
for(let j=0; j<n; j++){
matrix[i][j] = i*j; // 创建n²元素
}
}
return matrix;
}
记忆小窍门 🧠
- 看到循环嵌套 → 可能是指数/平方复杂度
- 递归调用 → 注意栈空间消耗
- 哈希表查找 → O(1) 超快但占用内存
曼波举个生活案例!(๑´ڡ`๑)
假设你要整理100本书:
- 按顺序摆放(O(n)时间) vs 乱塞(O(1)时间但难查找)
- 买新书架(增加空间) vs 堆在地上(节省空间但难打扫)