1. 刷题记录的价值与意义
作为一名程序员,保持持续的算法训练是提升技术能力的必经之路。我最近整理了2026年4月9日至12日这四天的刷题记录,发现这种系统性的记录方式不仅能帮助我追踪学习进度,还能发现知识盲区。在这篇文章中,我将分享这四天的刷题心得、解题思路以及一些实用的刷题技巧。
刷题不是简单的数量积累,而是对算法思维的系统性训练。通过记录每天的刷题情况,我可以清晰地看到自己在不同算法类型上的掌握程度,也能及时发现需要加强的薄弱环节。这种记录方式已经帮助我在技术面试和实际工作中解决了不少复杂问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 四天刷题内容概览
2.1 2026年4月9日:动态规划专题
这一天我主要聚焦于动态规划问题,这是算法中最具挑战性也最实用的部分之一。我选择了三道不同难度的题目进行训练:
-
最长递增子序列(LeetCode 300):这道经典题目帮助我理解了如何将问题分解为子问题,并建立状态转移方程。我的解法时间复杂度为O(n²),后来通过学习了解到可以使用二分查找优化到O(nlogn)。
-
零钱兑换(LeetCode 322):这道题展示了动态规划在解决最优化问题上的强大能力。我最初尝试了贪心算法,发现并不适用,这让我深刻理解了贪心和动态规划的区别。
-
编辑距离(LeetCode 72):这道题考察字符串操作,状态转移方程的建立过程让我对二维动态规划有了更深的理解。
提示:动态规划问题的关键在于找到正确的状态定义和转移方程。建议先从简单的例子入手,画出状态转移表,这样更容易发现规律。
2.2 2026年4月10日:图算法训练
第二天我转向图算法,这是另一个重要的算法领域:
-
课程表(LeetCode 207):这道题让我实践了拓扑排序算法,理解了如何检测有向图中是否存在环。我使用了Kahn算法(基于入度)和DFS两种方法实现。
-
岛屿数量(LeetCode 200):经典的DFS/BFS应用场景。我尝试了递归DFS、迭代DFS和BFS三种写法,比较了它们的优缺点。
-
网络延迟时间(LeetCode 743):这道题让我实践了Dijkstra算法的实现,并理解了优先队列在其中的关键作用。
在实际编码中,我发现图算法的实现细节特别容易出错,比如邻接表
