LeetCode 被圍繞的區域

2021-09-11 06:17:08 字數 1607 閱讀 7432

給定乙個二維的矩陣,包含 『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』區域找出來,但是這是幾乎不可能的,因為中間可能根本就不存在被包圍的區域,且即使是有包圍的區域也找不出來。所以採取逆向思維,先將與上、下、左、右四個邊界相鄰的所有『o』修改為『t』,然後剩下的『o』就是被包圍的,將剩下的『o』修改為『x』,最後將『t』修改回『o』即可。

class solution 

int colsize = board[0].size();

if (colsize == 0)

//將外圍的所有'o'全部修改為't'

for (int row = 0; row < rowsize; ++row)

if (board[row][colsize - 1] == 'o')

} for (int col = 0; col < colsize; ++col)

if (board[rowsize - 1][col] == 'o')

} //將中間剩餘的'o'全部轉換為'x'

for (int row = 1; row < rowsize - 1; ++row)

}} //將外圍的所有't'全部修改為'o'

for (int row = 0; row < rowsize; ++row)

if (board[row][colsize - 1] == 't')

} for (int col = 0; col < colsize; ++col)

if (board[rowsize - 1][col] == 't')

} }//將board[row][col]相鄰且等於targetch的修改為changech

被圍繞的區域

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