复杂度与基础 高频追问 Q&A
A: 不是。复杂度描述增长趋势,实际耗时还受常数、语言和硬件影响。(深入阅读:复杂度分析方法与陷阱)
约 2 分钟
复杂度与基础 高频追问 Q&A
1. Q: 时间复杂度和实际耗时是一回事吗?
A: 不是。复杂度描述增长趋势,实际耗时还受常数、语言和硬件影响。(深入阅读:复杂度分析方法与陷阱)
2. Q: 为什么忽略低阶项和常数项?
A: 当 n 足够大时,高阶项主导整体增长。(深入阅读:复杂度分析方法与陷阱)
3. Q: 均摊复杂度怎么解释?
A: 多次操作平均后的成本,如动态数组扩容单次最坏 O(n),均摊 O(1)。(深入阅读:复杂度分析方法与陷阱)
4. Q: 递归复杂度怎么估算?
A: 先写递推式,再用主定理或递推展开近似求解。(深入阅读:复杂度分析方法与陷阱)
5. Q: 面试中复杂度答题顺序?
A: 先时间后空间,再说明最坏/平均/均摊并给出关键瓶颈。(深入阅读:复杂度与基础知识速览、复杂度分析方法与陷阱)
6. Q: 如何根据题目选择数据结构?
A: 先列出核心操作,再选择能把瓶颈降到目标复杂度的结构:判重用 Set,映射用 Map,动态最值用堆,层次关系用树,多对多关系用图。(深入阅读:数据结构选型速记)
7. Q: 连续两段循环和嵌套循环怎么分析?
A: 连续执行取高阶项,嵌套执行通常相乘;例如 O(n) + O(n^2) 为 O(n^2),两层各执行 n 次为 O(n^2)。(深入阅读:复杂度分析方法与陷阱)