← 完整学习路线

UNIT 40 / 78 · W05-4

现在再学习数组与哈希算法

本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。

时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。

01 / READ

先知道自己在观察什么

数组、哈希与双指针:重复工作从哪里删掉 →

已完成错误返回与测试先备,先读 two sum 的过去位置不变量,再跟踪 abba 的窗口。

先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。

02 / PREDICT & RUN

先留下自己的预测或独立尝试

手算 [2,7,11] 的表状态,确认查询在插入之前;运行包含重复值和无解的基线。

哈希表只保存过去的位置 →
源码下载与编译入口

下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →

15-a.cpp

先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。

03 / CHANGE ONE THING

通过一个变动看清原因

在副本增加 [4,4] target=8、[4] target=8,记录是否存在两项及各索引。

修改后应观察到什么

两项输入返回不同位置0、1;单项返回无解,不复用自己。

04 / DO IT YOURSELF

换一组条件,独立解决

独立写排序数组双指针找和:输入[1,2,4,7,11]、目标9,只返回一个值对;范围先限定小整数。

用这些条件检查自己的实现

  • 找到2与7;空、单项、[1,2]目标8均无解。
  • 每次移动有有序性理由;若需求变成原索引,说明必须保存位置。
05 / EXPLAIN & CHECK

用证据决定是否进入下一单元

  1. 为何哈希查询必须在保存当前项之前?
  2. 为什么带负数的阈值和不能直接套普通滑动窗口?

本单元的验收依据

陌生有序输入与无解边界通过,能解释被丢弃端点为何无需再看;本章已移到G0之后。

留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。