主题
每日刷题总结 · 2026-08-19
今日题单
| 题 | 主标签 | 复盘 |
|---|---|---|
| 78. 子集 | 回溯 · start 索引 | 框架对但 hasFindArr+depth 绕晕;应换子集模板 |
| 17. 电话号码的字母组合 | 回溯 · 固定深度 | 最稳;补空串边界,函数别叫 bfs |
| 39. 组合总和 | 回溯 · 可重复选 + 剪枝 | 接近标准解;pop() 别写参数 |
| 22. 括号生成 | 回溯 · 约束剪枝 | 能 AC 但叶子补括号 + 重复分支,常数差 |
代码目录(不当博客看):78-子集/、17-电话号码的字母组合/、39-组合总和/、22-括号生成/。
今天练到什么
- 回溯三板斧:做选择 → 递归 → 撤销;四题都在练这条,但实现质量分化明显。
- start 索引 vs 固定深度:78、39 从
start往后选避免重复组合;17 深度 = 字符串长度,用下标填位或 push/pop 均可。 - 剪枝意识:39 的
tmpSum > target、22 的「右不能超过左」——组合总和已做到,括号生成应用双 if 而不是叶子补全。 - 模板统一:17、39 已接近教程写法;78 应回到 19 · 递归心智与回溯框架 子集段;22 对齐 20 · 回溯经典 括号段。
和教程线对齐:今天完整落在 阶段 E · 回溯(19~20),是教程里「子集 → 组合总和 → 括号」的同题单强化日。
总体评分
| 维度 | 分(1~5) | 说明 |
|---|---|---|
| 技术正确性 | 3.5 | 17、39 可靠;78 逻辑绕且有隐患;22 结果对但实现偏 |
| 复杂度意识 | 3 | 39 有剪枝;78、22 常数开销大(击败个位数 %) |
| 代码严谨度 | 3 | pop(item)、空串边界、重复分支等小问题分散 |
| 综合 | 3 / 5 | 回溯专题日:会搭递归,还没把「一个模板通四题」练成肌肉记忆 |
一句话总评:选题非常好,四题一条线;下一步是删掉多余状态(78 的 visited)和捷径(22 的批量补括号),四题统一成 push/pop + start/dfs 口述版。
明天建议
目标:巩固回溯模板 + 补去重变体,2~3 题即可。
- 必默写(不看代码):78. 子集 start 版 + 22. 括号生成 双 if 版,各 10 分钟内写完提交。
- 延伸一题(二选一)
- 46. 全排列 —— 对比子集,加
used数组 - 40. 组合总和 II —— 在 39 上加「每个数用一次 + 排序去重」
- 46. 全排列 —— 对比子集,加
- 读教程:重读 20 · 回溯经典 半篇,对照今天 39、22 标出与自己代码的差异三行。
