无标题
📊 第13周总结(3月23日 - 3月29日)
一、核心数据统计
| 维度 | 本周数据 | 上周对比 | 备注 |
|---|---|---|---|
| 专注时长(小时) | 约15小时 | ↑ 3h | 按每天2.5小时,6天计算 |
| 代码提交次数 | 约18次 | 持平 | 每个题解对应一次完整提交 |
| 论文/书籍阅读 | 《原则》第三部分 | — | 继续阅读 |
二、重点项目复盘
1. 算法学习/项目
本周进展:
- 字符串匹配三连击:完整实现了 BF、RK、KMP 三种算法,并配套 LeetCode 28 题「找出字符串中第一个匹配项的下标」。你不仅写了代码,还为每种算法建立了独立的概念笔记(含原理、步骤、实现、复杂度、应用场景),这是从“会做”到“会讲”的关键一跃。
- 哈希表专题:完成了 6 道哈希表相关题解(存在重复元素I/II、两个数组的交集I/II、有效的数独、设计哈希映射),并撰写了
哈希表.md概念文档,覆盖了哈希函数、冲突解决、核心操作。 - 优先队列/堆专题:完成了 3 道堆相关题解(数组中的第K个最大元素、前K个高频元素、根据字符出现频率排序),并撰写了
优先队列.md和二叉堆实现的优先队列.md,对比了数组/链表/堆三种实现的效率。 - 字符串操作:完成了反转字符串中的单词III、验证回文串、重复的子字符串,并更新了
字符串.md概念文档,涵盖存储结构、模式匹配、复杂度分析。
关键突破:
- 首次系统梳理了字符串匹配算法谱系:从朴素的 BF(O(n×m))到哈希筛的 RK(平均O(n+m))再到线性时间的 KMP(O(n+m)),你理解了“利用已有信息避免回溯”这一核心思想。
- 哈希表实现从“调库”到“手写”:在
设计哈希映射中,你用数组+线性探测模拟了 HashMap 的基本操作(虽然效率不高,但理解了底层)。 - 堆排序手写:在
数组中的第k个最大元素中,你手写了maxHeap和buildmaxHeap,这是对堆结构的深度掌握。
卡点/问题:
- 部分代码效率仍偏低:例如手写哈希映射仅击败5%,RK算法实现中直接用 Python 内置
hash()而非滚动哈希,导致效率不如预期。建议下次用滚动哈希公式手写,避免冲突导致的退化。 - KMP 的 next 数组构造仍有些绕,尤其是
while left>0 and p[left]!=p[right]的回退逻辑,建议多画图推导几遍。
2. 自我认知/情绪
从本周产出推断:
- 你进入了一种结构化输出”的心流——8篇概念文档 + 10+道题解,说明你找到了自己的节奏:学一个知识点,立刻用统一模板写成笔记,再用题解验证。这种“学-写-练”闭环非常高效。
- 情绪上应该比较平稳,没有出现上周的「赤口」式冲突。
三、原则库更新
本周新增/修订的原则:
-
「算法体系化原则」(本周新增)
每学完一类算法(如字符串匹配、哈希表、堆),立即用三篇文档建立体系:一篇「概念笔记」(原理+模板+复杂度),一篇「多解法对比」(如 BF/RK/KMP),一组「配套题解」。这样知识就不会散落。
-
「手写底层原则」(本周验证)
即使有现成库(如
heapq、hash()),也要至少手写一次底层实现(如堆调整、滚动哈希)。手写的过程会暴露理解盲区,是真正的“学会”。 -
「滚动哈希优先原则」(本周新增)
在做字符串匹配时,优先使用滚动哈希(Rabin-Karp)而非内置
hash(),因为内置哈希对子串切片每次重新计算,无法发挥滚动优势。手写滚动哈希还能控制模数避免冲突。
四、下周计划
1. 三个核心目标
- [ ] 目标1:完成「树」专题入门——二叉树遍历(前中后序、层序),至少4道题,并建立
二叉树.md概念笔记。
2. 一个实验(尝试新方法)
- 实验:在学新算法时,先用“费曼学习法”给空气讲一遍,再写代码。讲不通的地方就是理解盲区,重点攻克。
3. 想读/想看
- 书籍:《原则》第三部分「工作原则」读完,并提炼3条可用于算法学习的工作原则。
- 论文:浏览一篇「字符串匹配算法综述」(中文即可),了解 BM、Sunday 等算法的思路。
- 视频:李沐《动手学深度学习》第6-7集(关于循环神经网络),为后续时序特征打基础。
五、一句话总结本周
从“刷题机器”进化为“体系建造者”——你用8篇概念文档+18道题解,在字符串、哈希表、堆三个领域同时打下了可复用的知识地基。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 笺札!





