題目描述:
給定乙個二維的矩陣,包含 '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
包圍,不能變x
,同樣與邊界的o
相連的o
也是被看做沒有被x
包圍,因此也不能變成x
。因此我們可以得出這樣的結論,凡是邊界的o
,以及相連的o
都不能變x
,其餘的o
變x
。
所以我們可以對邊界上的o
進行深度遍歷或是廣度遍歷,把這些o
用另外的符號代替(這裡我用a
代替),然後再遍歷整個矩陣,把a
的元素改為o
,其餘的改為x
。
//code
class
solution
// 對左右邊界的'o'進行深度遍歷
for(
int i =
0;i)//對標記的a的修改為『o』,其餘改為『x』
for(
int i =
0;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)
;}}
演算法5 被圍繞的區域
給定乙個二維的矩陣,包含 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 找到所有被 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解釋 被圍繞的區間不會存在於...