通过动画逐步演示链表遍历与记忆化思想,理解 tag 数组的含义。
有如下 Python 程序段(高亮行表示当前执行位置):
若 data = [[11,3],[23,-1],[15,0],[26,1],[63,2]],运行该程序段后,tag[4] 的值为
?
| 索引 i | data[i][0] | data[i][1] 下一个 |
|---|
tag[i] 表示从节点 i 到终点的“步数”
data[i][1] 保存的是节点 i 的“下一个”节点索引,把所有节点串成链。终点节点的 data[i][1] == -1。tag[p] 已经被计算过,就直接把 tag[p] 加到当前结果中,避免重复遍历。这是典型的“空间换时间”。4 → 2 → 0 → 3 → 1,共 4 条边,因此 tag[4] = 4。