130. Surrounded Regions
Posted skillking
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了130. Surrounded Regions相关的知识,希望对你有一定的参考价值。
一、题目
1、审题
2、分析
给出一个二维数组,数组中只包含字符 ‘O‘、‘X‘, 将数组中被 ‘X‘ 包围的 ‘O‘ 全部换成 ‘X‘。(其中紧邻边界不算包围)
二、解答
1、思路:
方法一、
①、将紧挨着棋盘边缘的 "O‘" 或者与边缘的 "O" 连通的 “O” 全部换成 “1“;
②、将剩下的 O 全部换成 X,将 “1” 全部换成 “O“;
public void solve(char[][] board) { int rows = board.length; if(rows < 3) return; int cols = board[0].length; if(cols < 3) return; for (int row = 0; row < rows; row++) { check(board, row, 0, rows, cols); // 第一列的每个元素 check(board, row, cols - 1, rows, cols); // 最后一列的每个元素 } for (int j = 1; j < cols - 1; j++) { check(board, 0, j, rows, cols); // 第一行 (除了第一个、最后一个元素) check(board, rows - 1, j, rows, cols); // 最后一行 } for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { if(board[i][j] == ‘o‘) board[i][j] = ‘x‘; if(board[i][j] == ‘1‘) board[i][j] = ‘o‘; System.out.print(board[i][j]); } System.out.println(); } } void check(char[][] board, int row, int col, int rows, int cols) { if(board[row][col] == ‘o‘) { board[row][col] = ‘1‘; if(row > 1) check(board, row - 1, col, rows, cols); if(col > 1) check(board, row, col - 1, rows, cols); if(row < rows - 1) check(board, row + 1, col, rows, cols); if(col < cols - 1) check(board, row, col + 1, rows, cols); } }
以上是关于130. Surrounded Regions的主要内容,如果未能解决你的问题,请参考以下文章