leetcode 可以根据提示里:给定用例范围推测出最大复杂度
n的大小 | 最大复杂度 | 推荐方法 |
---|---|---|
n≤30 | 指数级别 | dfs+剪枝,状态压缩dp |
n≤100 | O(n3) | floyd,dp |
n≤1000 | O(n2),O(n2logn) | dp,二分 |
n≤10000 | O(n∗√n) | 块状链表 |
n≤100000 | O(nlogn) | 各种sort,线段树、树状数组、set/map、heap、dijkstra+heap、spfa、求凸包、求半平面交、二分 |
n≤1000000 | O(n), 以及常数较小的 O(nlogn) 算法 | hash、双指针扫描、kmp、AC自动机,常数比较小的 O(nlogn) 的做法:sort、树状数组、heap、dijkstra、spfa |
n≤10000000 | O(n) | 双指针扫描、kmp、AC自动机、线性筛素数 |
n≤109 | O(√n) | 判断质数 |
n≤1019 | O(logn) | 最大公约数 |
分界点(一旦n到达1e4,就不适合n2的暴力解法)