130. 被围绕的区域
1. 题目
给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。
示例 1:

1 | 输入:board = [["X","X","X","X"],["X","O","O","X"],["X","X","O","X"],["X","O","X","X"]] |
示例 2:
1 | 输入:board = [["X"]] |
提示:
m == board.lengthn == board[i].length1 <= m, n <= 200board[i][j]为'X'或'O'
2. 思路
已知题目要求将被
X围绕的区域中的O统一转换为X,同时已知题目中共存在以下三种元素:- 字母
X - 被字母
X围绕的字母O - 未被围绕的字母
O
- 字母
根据题目特性,可以得知要达到无法转换字母
O的条件,仅存在于关联到了边界的字母O的区域可以避免被围绕基于以上特性,可以将边界关联到的字母
O区域统一转换为-符号,关联转换的过程采用DFS深度优先进行完成所有边界关联转化后,字母矩阵中剩余的字符
O即为需要转化为X的单元格,随即对剩下的字母O进行统一转化而面对矩阵中剩下的字符
-单元格,则是不需要转化的字母O,将其恢复为字母O
3. 代码
1 | class Solution { |
4. 复杂度
- 时间复杂度:
O(n * m) - 空间复杂度:
O(n * m)
