算法题代码运行时间复杂度估计

总结一下关于问题规模(n大小)与算法时间复杂度要求的关系,有时候通过问题规模就可以判断出这道题需要用什么算法。
这样判断的一个好处就是可以很自然地从暴力求解的思路入手,逐步展开优化,更符合实际编程环境下的思维习惯,毕竟在实际开发时很少会真的直接想到用双指针或者动态规划解决一个编程问题。

所以一般给出n的范围的地方都叫做’提示’

CPU的GHz的含义

目前CPU的执行频率单位都是GHz,大概意思可以看作一秒能够执行 1 0 9 10^9 109行代码,即一秒运行一亿次的指令。虽然不同型号的CPU有所差距,但是按照大O时间复杂度估计法的原则可以简单这么认为。

算法题n的量级

按照CPU一秒可以运行一亿次估算,假设题目中n的范围是 1 0 5 10^5 105,那么这道题用 O ( n 2 ) O(n^2) O(n2)的时间复杂度求解就会超过一秒,可以把超过一秒这个限制看作是题目要求的上限。因此只能选择用双指针、队栈、动态规划等进行优化。

n的大小与时间复杂度的大致对应关系

n 的量级时间复杂度一般场景
四万或者五万 O ( n ) O(n) O(n)双指针、动态规划、队栈
两万或三万 O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n))排序、贪心
几千 O ( n 2 ) O(n^2) O(n2)暴力
几十或者一两百 O ( n k ) O(n^k) O(nk) 或者 O ( 2 n ) O(2^n) O(2n)二叉树、回溯

可以粗略地按照万、千、百、十的数量级进行大致的判断。
基本上万级别即以上的都需要上算法了。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值