被围绕的区域
给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。
找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。
示例:
X X X X
X O O X
X X O X
X O X X
运行你的函数后,矩阵变为:X X X X
X X X X
X X X X
X O X X
解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/surrounded-regions
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法一:dfs
package _2020_07_08;
public class 被围绕的区域 {
public static void main(String[] args) {
char[][] borad = {
{
'X', 'X', 'X' ,'X'},
{
'X' ,'O', 'O', 'X'},
{
'X' ,'X' ,'O', 'X'},
{
'X', 'O', 'X', 'X'}};
solve(borad);
}
static int n , m;
public static void solve(char[][] board) {
n = board.length;
if( n == 0 )
return ;
m = board[0].length;
//x轴去标志
for(int i = 0 ; i < n ; i++){
dfs(board , i , 0 );
dfs(board , i , m - 1);
}