一般题目要求1s-2s,即复杂度<=10^8
题目要求n的范围,以及其时间复杂度和常见的题目
n<=30 指数级别 dfs+剪枝
n=100 即复杂度n^3 floyd
n=1000 即复杂度n^2
n=10000 即复杂度n*sqrt(n) 块状链表
n=100000 即复杂度nlogn 各种sort,线段树,树状数组,set/map,heap
n=1000000 即复杂度O(n),nlog,hash
n=10000000 即复杂度O(n)
n=10^9 即复杂度O(sqrt(n))
n=10^18 即复杂度O(logn),最大公约数
常见时间复杂度量级
1.线性阶
当n=1时,执行一次,当n=100时,执行100次,所以当为n时,执行n次,时间复杂度为O(n)
2.平方阶
外层循环和内层循环都是复杂度n时,外层循环一次,内层循环一次,所以复杂度是O(n^2)
3.对数阶
满足条件时,程序运行了,先设X个2相乘后大于n,则2^X=n,解得X=log2(n),所以时间复杂度是O(log2(n)),log以2为底,n为真数
常见的时间复杂度排序
O(1)< O(log2(n))< O(n)< O(nlog2(n)< O(n^2)< O(n^3)< O(2^n)< O(n!)< O(n^n)