关于集团网站建设的修改请示,福州注册公司大概费用,公司门面网站设计,网站注册收入给定一个二维的矩阵#xff0c;包含 X 和 O#xff08;字母 O#xff09;。
找到所有被 X 围绕的区域#xff0c;并将这些区域里所有的 O 用 X 填充。
示例:
X X X X X O O X X X O X X O X X 运行你的函数后#xff0c;矩阵变为#xff1a;
X X X X X X X X X X X X…给定一个二维的矩阵包含 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。如果两个元素在水平或垂直方向相邻则称它们是“相连”的。
代码
class Solution { public void solve(char[][] board) { if(board.length0){ return; } for(int i0;iboard[0].length;i){ helper(board,0,i); helper(board,board.length-1,i); } for(int j0;jboard.length;j) { helper(board,j,0); helper(board,j,board[0].length-1); } /* for(int i0;iboard.length;i) { for(int j0;jboard[0].length;j) { System.out.print(board[i][j] ); } System.out.println(); }*/ for(int i0;iboard.length;i) { for(int j0;jboard[0].length;j) { if(board[i][j]Y) { board[i][j]O; } else if(board[i][j]O) { board[i][j]X; } } } } public void helper(char[][] board,int row,int col) { if(row0||rowboard.length-1||col0||colboard[0].length-1){ return; } if(board[row][col]X||board[row][col]Y){ return; } board[row][col]Y; helper(board,row-1,col); helper(board,row1,col); helper(board,row,col-1); helper(board,row,col1); }
}