核心算法思想
算法题的本质是"用已知思想组合解题"。掌握几种通用思想,比刷百题更有效。
一、递归与分治
递归是自调用,分治是把大问题拆成同质小问题(快排、归并、二分)。注意递归的终止条件与栈深度。
二、贪心
每步取局部最优,期望得到全局最优。适用面窄但高效,需证明贪心选择性质。
三、动态规划
把重叠子问题缓存起来(记忆化/DP 表),自底向上推导。关键是定义状态与转移方程,如背包、最长公共子序列。
四、回溯
试探—撤销的穷举框架,用于排列组合、N 皇后等。用剪枝减少搜索空间。
做题顺序建议:先想暴力/递归,再找能否贪心,否则考虑 DP 或回溯,最后才是复杂数据结构。