SSephuan 的算法笔记
返回首页
算法基础 6 分钟阅读

从数据范围判断算法方向

复杂度不是写完代码后的装饰,而是读题时帮助我们缩小答案范围的工具。

数据范围是一种提示语言

如果 只有 左右,枚举子集可能是自然选择;如果 达到 通常就需要重新审视。读到范围时,可以先做一个粗略估算:程序大约需要执行多少次基本操作?

常见的方向包括:

  • :线性扫描、前缀和、双指针;
  • :排序、平衡树、分治;
  • :通常适合几千以内的数据;
  • :通常只适合较小的 ,常与状态压缩或搜索结合。

不要只看最坏的符号

同样是 ,一次简单加法和一次复杂哈希操作的常数不同;同样是 ,排序与树结构的内存访问特征也不同。实际判断还要结合语言、内存限制和数据分布。

但在学习阶段,先用复杂度排除明显不可能的方案,再讨论常数优化,通常是更稳妥的顺序。

记录思路,分享理解,让每次练习都产生长期价值。