1. 刷题记录的价值与意义
作为一名程序员,我坚持刷题已经三年多了。2026年3月10日至12日这三天,我记录了详细的刷题过程,这看似简单的记录背后,其实蕴含着许多值得分享的经验和方法论。
刷题记录不仅仅是题目的简单罗列,它更像是一面镜子,反映出我们的思维方式、知识盲区和进步轨迹。通过系统性地记录和分析,我们可以:
- 发现算法思维的薄弱环节
- 识别常见题型的解题模式
- 追踪个人能力的成长曲线
- 建立个性化的解题知识库
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 我的刷题方法论
2.1 题目选择策略
在这三天的刷题过程中,我采用了"金字塔式"选题法:
- 基础题(30%):巩固基本数据结构和算法
- 中等题(50%):训练综合应用能力
- 难题(20%):突破思维瓶颈
具体到3月10日这天,我的题目分布是:
- 数组相关:3道(两指针、前缀和)
- 树结构:2道(DFS/BFS应用)
- 动态规划:1道(背包问题变种)
2.2 解题过程记录规范
我使用Markdown格式记录每道题的详细解题过程:
markdown复制## 题目:LC.215 数组中的第K个最大元素
### 初次思路:
1. 直接排序后取倒数第k个元素(O(nlogn))
2. 考虑使用堆结构优化(O(nlogk))
3. 最终选择快速选择算法(O(n)平均)
### 实现细节:
- 分区函数需要特别注意边界条件
- 随机化pivot提高平均性能
- 递归实现改为迭代避免栈溢出
### 踩坑记录:
- 未处理k>nums.length的情况
- 分区时忘记移动指针导致死循环
2.3 时间管理与节奏控制
我采用番茄工作法进行刷题:
- 25分钟专注解题
- 5分钟记录和反思
- 每完成3个番茄钟休息15分钟
3月11日的时间分配示例:
code复制09:00-09:25 解题(LC.347 前K个高频元素)
09:25-09:30 记录解题思路
09:30-09:55 解题(LC.238 除自身以外数组的乘积)
09:55-10:00 画示意图辅助理解
10:00-10:15 休息+回顾
3. 刷题工具链配置
3.1 本地开发环境
我的刷题环境配置:
- VS Code + LeetCode插件
- 自定义代码片段(常用算法模板)
- 本地测试用例生成脚本
- Git版本控制(每题一个commit)
3.2 效率工具集成
code复制# 我的刷题助手脚本
#!/bin/bash
# 自动生成测试用例并运行
python generate_test_case.py | python solution.py
3.3 知识管理方案
使用Notion建立刷题知识库:
- 题目分类标签系统
- 解题思路脑图
- 常见模式速查表
- 错误类型统计看板
4. 常见问题与优化策略
4.1 刷题遇到的典型问题
在这三天中,我遇到了几个反复出现的问题:
- 边界条件处理不完善(特别是数组索引)
- 递归转迭代的思维转换困难
- 空间复杂度分析不够准确
- 特殊测试用例考虑不周全
4.2 性能优化实战案例
以3月12日的LC.309最佳买卖股票时机含冷冻期为例:
初始解法:
- 三维DP(状态过多)
- 时间复杂度O(n^2)
优化后:
- 状态压缩到两个变量
- 时间复杂度降为O(n)
- 空间复杂度从O(n)降到O(1)
优化关键点:
- 发现状态转移的冗余
- 找到状态之间的数学关系
- 用临时变量替代完整DP表
4.3 刷题效率提升技巧
- 错题重做机制:隔天、隔周、隔月三次重做
- 同类题目对比:找出共性和差异
- 白板编程训练:模拟面试场景
- 语音解题法:用语言描述解题思路
- 极限测试:故意制造极端用例验证鲁棒性
5. 刷题与工程实践的衔接
5.1 算法在实际项目中的应用
通过刷题积累的算法思维,我在工作中解决了:
- 大数据去重(布隆过滤器)
- 路由优化(Dijkstra算法变种)
- 缓存淘汰策略(LRU实现)
- 任务调度(拓扑排序)
5.2 面试准备策略
基于刷题记录,我建立了:
- 高频考点清单
- 个人弱项分析表
- 解题话术模板
- 时间把控训练方案
5.3 技术成长路线图
我的进阶计划:
- 系统学习计算几何
- 深入研究博弈论相关题目
- 参加编程竞赛保持手感
- 开始刷题直播分享经验
