快速判断时间复杂度和空间复杂度

112 阅读1分钟

喜欢就关注我吧,订阅更多算法小知识

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】自行领取。让我们一起探讨技术、分享技术资料,旨在共同学习进步,如果感兴趣就加入我们吧!

本文使用 文章同步助手 同步