学习目标与必要基础
Section titled “学习目标与必要基础”你需要会读数组、基础循环和 Java 方法。不熟悉下标、历史区、键、频次、查询与更新也没关系,首课会逐一解释。
学习时试着回答三个问题:我在枚举谁?我需要查询什么?我消掉了哪一层重复工作?这里沿用材料中的“枚举状态表”作为问题模型的称呼;它不是一种新容器,具体可以使用 HashMap、频次数组或前后缀数组。
建议学习顺序
Section titled “建议学习顺序”- 读懂问题与样例,确认统计的是哪些下标对。
- 手动走一遍暴力检查,再看如何用左侧频次替代重复扫描。
- 在错误实验中观察自己为什么会被算进去。
- 对照 Java,换一个样例独立推演,再做三道自测。
| 方向 | 将要解决的问题 | 状态 |
|---|---|---|
| 条件重排与贡献法 | 两数之和的键匹配、坏数对的总数减好数;区分输出下标与输出数量 | 规划中 |
| 枚举中间,看两边 | 山形三元组与左右最优信息 | 规划中 |
| 枚举结构轴 | 对角线分组与排序 | 规划中 |
| 枚举答案结构 | 两个不重叠区间的最优合并 | 规划中 |
| 单调推进与窗口维护 | 双指针、窗口加入和移除 | 规划中 |
这些方向暂未提供课程,不计入本期交付。原有算法文章仍保留在侧栏“算法思想与排序”中。
专题依据《枚举与观察力-能力拆解分析报告》《枚举与观察力-能力拆解分析报告-白话版算法学习文档》和《枚举与观察力-数据结构基础模板文档(Java)》整理。具体使用章节、教学修订见首课末尾。