← 返回专栏列表

经典算法专栏

共 13 篇文章

1. 图算法:遍历、最短路、MST、拓扑与 Tarjan

图由顶点和边组成,是描述"关系"最自然的数据结构。本文覆盖图的存储、BFS/DFS 搜索、Dijkstra/Bellman-Ford 最短路径、Prim/Kruskal 最小生成树和拓扑排序,每个算法配有过程图辅助理解。

2. 排序与搜索:十大排序、二分查找与动态规划

本文覆盖十大排序算法对比、快排/归并排序原理与实现、二分查找的 4 种变体,以及动态规划入门(0-1 背包/最长公共子序列)。

3. 动态规划:五类经典问题的状态转移方法

动态规划(DP)是解决最优化问题的核心思想:将大问题分解为相互重叠的子问题,用备忘录避免重复计算。本文深度讲解 DP 三要素、五大类型,每类给出 2-3 道经典题的完整代码。

4. 业务场景算法:限流、Top-K 与一致性哈希

真实世界的算法和面试题不一样——它们有明确的业务背景。本文以"业务场景 → 算法抽象 → 实现"的格式组织,覆盖限流、一致性哈希、Top-K、去重、分布式 ID、缓存淘汰等高频场景。

5. 算法复杂度:递归树、主定理与摊还分析

复杂度分析是算法设计的基础语言。本文不止于列公式——重点建立直觉:为什么归并排序是 nlogn 而不是 n²?递归树怎么画?摊还分析的"信用"从哪来? 对应《算法导论》第 3、4、17 章。

6. 基础数据结构:树、堆、哈希与并查集

五大基础数据结构的深度解析:不止于"会用",而是理解为什么红黑树能保证 O(logn)、哈希表 α=0.75 从何而来、并查集的近 O(1) 靠什么支撑。对应《算法导论》第 6、10~13、21 章。

7. 分治与贪心:拆解问题与局部最优策略

分治和贪心是两种截然不同的设计哲学:分治信任递归——把问题拆小、解决、合并;贪心信任局部——每步做最优选择、不回头。本文不止给代码,重点讲清为什么这样做是对的。对应《算法导论》第 4、5、16 章。

8. 字符串算法:KMP、BM、RK 与 Trie

字符串匹配的核心矛盾是:暴力法每次失配都"忘记"已知信息,从头再来。KMP、BM、RK 各自用不同方式记住已比较的信息,避免冗余工作。本文不止给代码——重点讲清每个算法为什么这样跳跃是安全的。对应《算法导论》第 32 章。

9. 网络流与匹配:最大流、最小割与二分图

网络流的核心问题是:如何把有限资源从源点最大化地运送到汇点? 最大流-最小割定理揭示了一个深刻对偶:系统的最大吞吐量恰好等于最薄弱截面的容量。本文不止给代码——重点讲清反向边为什么能"反悔"、增广路怎么一步步推进、二分图匹配与最大流的等价性。对应《算法导论》第 26 章。

10. 二分算法:边界查找与答案二分模板

二分的本质不是“在有序数组里找数”,而是在一个存在单调边界的搜索空间中定位分界点。本文用统一的半开区间模板推导精确查找、前驱/后继、重复元素边界与答案二分,并配套 LeetCode 题型。

第 1 / 2 页 · 共 13 篇