一、先问清楚:到底要解决什么问题?
很多算法书一上来就是大段伪代码和复杂符号,让人很快失去耐心。 但真实世界里的算法,其实都是从「一个很具体的问题」开始的。
一个简单的例子:给你一堆无序的数字,怎样更快地找到其中第
K 大的那个?——这是典型的排序 / 选择问题。
二、排序:从「一张一张看」到「折半思维」
冒泡排序、插入排序、快速排序……名字很多,其实可以先只记住两个层次:
- 朴素做法:每次只比较相邻两个,慢但容易想;
- 分治思路:拆成更小的子问题,再合并结果,比如快速排序。
三、搜索:顺藤摸瓜 vs. 一分为二
搜索问题也类似:线性搜索、二分搜索、图的 BFS/DFS,本质上是「沿着不同路径顺藤摸瓜」。
🔍
一个训练小习惯
每次刷到一个新题目,先别看答案,试着自己总结两件事: 1)输入和输出是什么;2)可以用哪些不同的思路去接近答案。 把这两点写在纸上,比直接记别人的解法更有用。