130. 被围绕的区域
给定一个二维的矩阵,包含
'X'
和'O'
(字母 O)。找到所有被
'X'
围绕的区域,并将这些区域里所有的'O'
用'X'
填充。示例:
1
2
3
4
5 > X X X X
> X O O X
> X X O X
> X O X X
>
运行你的函数后,矩阵变为:
1
2
3
4
5 > X X X X
> X X X X
> X X X X
> X O X X
>
解释:
被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。
思路:题目需要将所有被X
包围的O
找出来,那剩下的O
就是连接起来与边界连通的O
。直接找出来所有被X
包围的O
并不好找(写了很多边界条件 ac不了…..),但我们可以逆向思维:先找到所有连接起来与边界连通的O
,将这些O
标记一下,然后遍历数组,所有没有被标记的O
就是我们要找的O
。
1 | class Solution { |