喜欢就关注我吧,订阅更多算法小知识
原文链接
1.1时间复杂度
O(1)
代码只被执行一次
O(n)
for循环里的代码执行了n次
O(1)+O(n)= O(n)
当n足够大 ,1可以忽略不计
O(n)*O(n)= O(n^2)
如果存在嵌套就相乘
O(logN)
用于求2的多少次方为N
1.2空间复杂度
一个函数,用大O表示,比如O(1)、O(n)、O(n个2)…
算法在运行过程中临时占用存储空间大小的量度
O(1)
单个变量所占的空间永远为1
O(n)
数组里面有n个值,占用了n个内存单元
O(n^2)
为矩阵即行列
本质是一个嵌套的二维数组,存储了n的二次方个变量
再用一道算法题解释一下这个概念
var isValid = function(s) {
if(s.length %2 ===1){return false;} //性能优化,如果为奇数就不往下执行了
const stack = [];
for (let i=0;i < s.length;i +=1){
const c = s[i];
if(c==='('|| c==='{'|| c==='['){
stack.push(c);//入栈
}else{
const t =stack[stack.length -1];
if(
(t==='('&&c===')')||
(t==='{'&& c==='}')||
(t ==='['&& c===']')
){
stack.pop ();//出站
}else{
return false;//匹配失败
}
}
}
return stack.length ===0;
};
上面代码中
只有一个for循环
时间复杂度为O(n)
for循环里的代码执行了n次
空间复杂度:O(n)
数组里面有n个值,占用了n个内存单元
整理了一些绝密大厂实践经验视频 和面试指南,前端学习书籍,悄悄送给小伙伴们。关注前端大数据回复暗号【7】自行领取。让我们一起探讨技术、分享技术资料,旨在共同学习进步,如果感兴趣就加入我们吧!