被圍繞的區域

2022-05-18 12:56:39 字數 1089 閱讀 1139

給定乙個二維的矩陣,包含 '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'。

如果兩個元素在水平或垂直方向相鄰,則稱它們是「相連」的。

二維的內容基本確定為各種遍歷,因為類似於圖。這裡比較好選擇,一般採用深度優先演算法解答。關鍵在於題目說明了,在任何邊界上的『o'都不會被填充為'x'。所以逆推乙個思路,如果此時分別從四邊開始遍歷直接或者間接與此四條邊上的'o'相連通的'o',並做下標記。

然後重新開始二迴圈遍歷這個矩陣,將之前做下的標記更換為「o」,而沒有做下的標記就將其更換為'x',這樣子可以完成解答了。

還是要注意邊界。

class solution 

// m是y的寬度

m = board[0].length;

for (int i = 0; i < n; i++)

for (int i = 1; i < m - 1; i++)

for (int i = 0; i < n; i++) else if (board[i][j] == 'o') }}

}public void dfs(char board, int x, int y)

board[x][y] = 'a';

dfs(board, x + 1, y);

dfs(board, x - 1, y);

dfs(board, x, y + 1);

dfs(board, x, y - 1);

}}

被圍繞的區域

被圍繞的區域 給乙個二維的矩陣,包含 x 和 o 找到所有被 x 圍繞的區域,並用 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 x o x x class unionfi...

被圍繞的區域

給定乙個二維的矩陣,包含 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解釋 被圍繞的區間不會存在於...

被圍繞的區域

給定乙個二維的矩陣,包含 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 解釋 被圍繞的區間不會存...