1. 力扣刷题的价值与意义
作为一名程序员,算法能力就像厨师的刀工一样重要。力扣(LeetCode)作为全球知名的算法练习平台,汇集了各大科技公司的面试真题和经典算法问题。2026年1月22日这天的刷题记录,看似普通,实则蕴含着系统提升算法思维的关键路径。
我坚持每日刷题已有三年,发现一个规律:那些最终进入头部科技公司的程序员,90%都有持续刷题的习惯。但刷题不是简单的"题海战术",而是要有方法、有记录、有反思。这份笔记就是我在实战中总结的高效刷题方法论。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 当日的题目选择策略
2.1 题目类型分布
这天我选择了3道题目,覆盖了不同的难度和类型:
- 简单题:两数之和(经典热身)
- 中等题:字母异位词分组(字符串处理)
- 困难题:接雨水(动态规划/双指针)
这种"简单-中等-困难"的阶梯式安排,既保证了热身效果,又能逐步挑战思维极限。根据认知科学的研究,这种渐进式训练最能促进大脑形成长期记忆。
2.2 热题100的刷题逻辑
我特别关注力扣热题100榜单,因为这些题目:
- 出现频率:统计显示这些题在面试中出现概率超过70%
- 知识覆盖:涵盖8大算法类型(数组、链表、树等)
- 思维训练:每道题都有多种解法,培养多角度思考
比如当天的"字母异位词分组",就是热题100中的经典案例,考察了哈希表和字符串处理的综合运用。
3. 具体题目解析与实现
3.1 两数之和的四种解法
这道题看似简单,实则暗藏玄机:
python复制# 暴力法 O(n²)
def twoSum(nums, target):
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
# 哈希表法 O(n)
def twoSum(nums, target):
hashmap = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hashmap:
return [hashmap[complement], i]
hashmap[num] = i
关键心得:面试时应该先给出暴力解法,再优化。这展示了你的思维过程,比直接给出最优解更有价值。
3.2 字母异位词分组的优化之路
这道题的核心是如何高效判断异位词:
python复制# 方法1:排序法 O(nklogk)
def groupAnagrams(strs):
groups = {}
for s in strs:
key = ''.join(sorted(s))
groups.setdefault(key, []).append(s)
return list(groups.values())
# 方法2:计数法 O(nk)
def groupAnagrams(strs):
groups = {}
for s in strs:
count = [0] * 26
for c in s:
count[ord(c) - ord('a')] += 1
key = tuple(count)
groups.setdefault(key, []).append(s)
return list(groups.values())
避坑指南:Python中列表不能作为字典键,必须转为元组。这是实际编码时容易踩的坑。
4. 刷题方法论与效率提升
4.1 我的五步刷题法
- 审题阶段(5分钟):画出示例,确保理解题意
- 构思阶段(10分钟):在白板写出所有可能解法
- 编码阶段(15分钟):实现最优解法
- 测试阶段(5分钟):边缘用例测试
- 复盘阶段(10分钟):复杂度分析和优化思考
4.2 刷题笔记的黄金模板
我每个题目的笔记包含:
- 问题重述(用自己的话描述)
- 初始思路(包括错误思路)
- 最终解法(带复杂度分析)
- 测试用例(常规+边界)
- 相似题目(举一反三)
例如接雨水这题的笔记就链接了5道相关题目,形成知识网络。
5. 常见问题与解决方案
5.1 刷题时遇到的典型问题
| 问题类型 | 解决方案 | 实际案例 |
|---|---|---|
| 思路卡壳 | 先写暴力解再优化 | 动态规划问题 |
| 边界错误 | 先列测试用例再编码 | 数组越界问题 |
| 超时限制 | 分析复杂度瓶颈 | 嵌套循环优化 |
5.2 效率提升的硬件配置
我的刷题环境配置:
- 外接显示器:竖屏显示题目和代码
- 机械键盘:青轴提升编码节奏感
- 计时器:严格限制每题30分钟
- 白板:手绘算法流程图
6. 进阶资源与学习路径
6.1 力扣之外的补充资源
- 《算法导论》:理论基础必备
- VisuAlgo.net:算法可视化工具
- 牛客网:国内企业真题库
- Codeforces:锻炼快速编码能力
6.2 三个月冲刺计划
根据我的经验,有效的刷题计划应该是:
- 第1个月:按类型刷题(每天2题)
- 第2个月:按公司分类刷(每天3题)
- 第3个月:模拟面试(每天1场)
每周保留一天专门复习错题本,这个循环效果远超无计划刷题。
7. 面试实战技巧
7.1 白板编程的注意事项
- 先问清楚需求(输入输出范围)
- 边写边解释思路
- 预留空间写测试用例
- 字迹工整有层次
- 完成后自我检查
7.2 遇到陌生题目的应对策略
我总结的"三步应急法":
- 类比:联想相似题目
- 分解:将大问题拆解
- 举例:用具体示例反推
这个方法帮助我在面试中解决了80%的突发情况。
8. 长期维护的知识体系
8.1 我的算法脑图
将算法知识分为:
- 数据结构(数组、树等)
- 算法思想(分治、贪心等)
- 特殊技巧(双指针、位运算等)
- 数学基础(概率、组合等)
每完成一个类型,就在脑图中标记掌握程度。
8.2 错题本的智能管理
使用Notion数据库管理错题:
- 标签系统(按难度、类型)
- 错误原因分析
- 重做时间提醒
- 相似题目关联
这个系统使我的复习效率提升了3倍。
9. 心理建设与习惯养成
9.1 克服刷题焦虑的方法
- 五分钟启动法:先做一道简单题进入状态
- 番茄工作法:25分钟专注+5分钟休息
- 成就记录:每日记录小进步
- 同伴监督:加入刷题小组
9.2 我的每日刷题仪式
- 早晨7-8点:复习昨日错题
- 午休时间:1道新题
- 晚上8-9点:2道新题+总结
- 睡前:快速浏览笔记
这个节奏保持了三年,形成了稳定的算法思维习惯。
10. 工具链与自动化
10.1 我的刷题工具包
- VS Code配置:
- LeetCode插件
- 代码片段管理
- 自动测试脚本
- Chrome扩展:
- 计时器
- 提交历史分析
- 本地脚本:
- 自动生成题目模板
- 统计刷题进度
10.2 自建的刷题统计系统
用Python搭建的看板包含:
- 每日刷题量折线图
- 题型分布饼图
- 通过率趋势图
- 耗时分析直方图
这个系统帮助我发现了"动态规划类题目平均耗时较长"的弱点,从而针对性加强。
