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 {  |