算法

Algorithm

为解决某一类特定问题而设计的、在有限步骤内可执行的、精确的指令序列
它规定了解题的输入、输出、操作步骤逻辑流程,是计算机科学的核心概念之一。

算法的基本特性

算法研究的根本是各种现实问题的求解,将问题抽象为数学模型后。很多现实的问题的求解就可以归结为同一问题的求解。

快速了解新的算法

  1. 明确算法定位与解决的问题

    • 这类算法是解决什么类型的问题?(排序?搜索?图论?优化?机器学习?)
    • 输入是什么?输出是什么?
    • 与哪些问题场景最相关?
  2. 把握算法的核心思想

  3. 从伪代码或流程图入手,画图模拟

  4. 亲自实现 + debug + trace

  5. 掌握复杂度、边界与变体

    • 时间/空间复杂度分析;
    • 极端输入下表现;
    • 该算法是否有改进版、并行版、近似版?

常用算法

通用思想:子问题分解 递归 复杂度分析

枚举:直接列举出所有可能情况并逐一验证
搜索:从数据中寻找满足条件的目标
排序:对数据按照某种规则进行有序排列
分治:将问题分解成规模更小的子问题递归求解,最后合并
回溯:尝试探索所有可能解,通过“撤回上一步”回到分支点继续尝试
动态规划:利用子问题最优解构建大问题最优解,通过“保存中间结果”避免重复计算
贪心算法:在每一步选择局部最优解,期望通过局部最优得到整体最优
差分与前缀和:处理区间更新与查询问题的高效技巧。
最短路径算法:寻找图中两点之间的最短路径
启发式优化算法:通过概率或启发信息寻找近似解

参考资料

https://www.hello-algo.com/