北大硕士LeetCode算法专题课---算法复杂度介绍

大O复杂度表示法用于估算算法执行效率,忽略低阶、常量和系数,关注随着数据规模n增长的趋势。例如,O(n)代表线性复杂度,适用于简单的遍历,而O(n^2)代表平方复杂度,常见于双重循环。时间复杂度分析关键在于识别执行次数最多的代码段,且递归算法的时间复杂度与递归深度和单次递归操作的复杂度有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法复杂度中大O的含义

推荐教程:北大硕士带你手撕Leetcode算法题

O复杂度表示法

算法面试中, 经常会被问到,你写的算法复杂度是多少, 或者设计一个复杂度为 O(nlogn) 的算法复杂度分析是估算算法执行效率的方法,公式O(f(n))表示算法的复杂度,此方法即为O复杂度表示法O(f(n))n表示数据规模,f(n)表示运行算法所需要执行的指令数。

下面的代码非常简单,1,2,3…n 的累加和,我们来估算它的执行效率

假设每行代码执行的时间都一样为t

执行第2行代码需要时间t,第3,4行代码运行了n遍,需要的时间为2n*t

这段代码总执行时间为(2n+1)* t

结论:代码执行的总时间T(n)与每行代码的执行次数成正比

看下面的代码,估算该段代码的执行时间

同样假设每行代码执行的时间都一样为t

执行第2行代码需要时间t

3行代码运行了n遍,需要时间为n*t

45行代码运行了n2次,需要时间为2n2 * t

执行所有代码的总时间为 (2n2 + n + 1)* t

结论:代码执行的总时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值