题目链接
英文链接:https://leetcode.com/problems/coloring-a-border/
中文链接:https://leetcode-cn.com/problems/coloring-a-border/
题目详述
给出一个二维整数网格 grid,网格中的每个值表示该位置处的网格块的颜色。
只有当两个网格块的颜色相同,而且在四个方向中任意一个方向上相邻时,它们属于同一连通分量。
连通分量的边界是指连通分量中的所有与不在分量中的正方形相邻(四个方向上)的所有正方形,或者在网格的边界上(第一行/列或最后一行/列)的所有正方形。
给出位于 (r0, c0) 的网格块和颜色 color,使用指定颜色 color 为所给网格块的连通分量的边界进行着色,并返回最终的网格 grid 。
示例 1:
1 | 输入:grid = [[1,1],[1,2]], r0 = 0, c0 = 0, color = 3 |
示例 2:
1 | 输入:grid = [[1,2,2],[2,3,2]], r0 = 0, c0 = 1, color = 3 |
示例 3:
1 | 输入:grid = [[1,1,1],[1,1,1],[1,1,1]], r0 = 1, c0 = 1, color = 2 |
提示:
1 | 1 <= grid.length <= 50 |
题目详解
- 问题的关键在于判断边框。
- 边框可能是处于数组边缘或者当前网格颜色与周围网格颜色不同。
- 注意设置访问标志,防止递归不能终止导致栈溢出。
1 | public class LeetCode_01034 { |