第8章|图与并查集

Unit 02 · LeetCode #733 图像渲染

仅本次页面有效
U02
Flood Fill on an Implicit GraphPixel → Four Neighbors → Recolor on Enqueue

二维网格没有画边,
但每个像素仍然生活在一张图里。

本单元把 Unit 01 的显式邻接表迁移到隐式网格图:坐标是节点,上下左右是候选边,只有与起点原颜色相同的像素才属于本次连通分量。新颜色不仅是输出,也可以承担 visited 标记。

检测到上次学习现场阶段、案例、动画步、问题、槽位、迁移脚手架、代码高度和滚动位置均可恢复。

LeetCode #733 图像渲染

给定一个由整数表示像素颜色的 m × n 图像、起点 (sr, sc) 和目标颜色 color。从起点开始,将所有通过上下左右路径连接、且颜色与起点原颜色相同的像素改为目标颜色,返回修改后的图像。

示例 1 image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, color = 2 输出 = [[2,2,2],[2,2,0],[2,0,1]] 示例 2 image = [[0,0,0],[0,0,0]] sr = 0, sc = 0, color = 0 输出 = [[0,0,0],[0,0,0]]

约束与 Python 签名

1 ≤ m, n ≤ 50 0 ≤ image[i][j], color < 2^16 0 ≤ sr < m 0 ≤ sc < n class Solution: def floodFill(self, image, sr, sc, color): ...

连通只允许共享边的四方向,不包含对角线。

original_color

起点进入算法前的颜色。搜索期间保持不变,用于判断一个邻居是否属于原连通分量。

queue

已经发现、已经染色,但尚未展开四个邻居的像素坐标。

image == color

当新旧颜色不同,染色本身等价于 visited:已染色像素不会再次满足原色条件。

Implicit Graph

边没有存进邻接表,而是通过坐标加减即时生成。

Four-directional

合法邻居只能是上、下、左、右,共享角的像素没有边。

Recolor on Enqueue

像素入队前立即染色,防止被多个父像素重复加入队列。

Early Return

原颜色等于目标颜色时直接返回,否则染色无法充当访问标记。

认知任务 1
先把像素翻译成节点和边
网格没有显式邻接表;当前坐标的上下左右就是候选邻居,再由边界和颜色条件过滤。
隐式网格图步骤 1
选择案例并逐步运行。
阶段 1 / 6

第八章 Unit 02 · Skill 卡

网格搜索仍然是图遍历。坐标是节点,四方向生成邻居;original_color 决定连通分量边界,队列维护搜索前沿,入队前染色同时完成输出修改和访问标记。

Graph Model像素坐标是节点,四方向是候选边
Membership颜色必须等于起点原颜色
Visited新旧颜色不同,可用染色代替集合
Boundary先检查坐标合法,再读取像素
Stop队列耗尽,原连通分量已全部处理
Complexity时间 O(mn),队列空间最坏 O(mn)
完成后停留在当前页面

不会倒计时或自动跳题。可以返回任何阶段重播动画、继续调整迁移代码,或手动进入 Unit 03。

手动进入 Unit 03