注意這題的"環繞"指的是:任何邊界上的 『o』 都不會被填充為 『x』。 任何不在邊界上,或不與邊界上的 『o』 相連的 『o』 最終都會被填充為 『x』,或者說與邊界上的o及與邊界o相連的o以及再與邊界上的o相連的o相連的(在一條直線上的)o不會變為x
思想:
並查集思想:遍歷board,把與邊界上的o及與邊界o相連的o以及再與邊界上的o相連的o相連的(在一條直線上的)o給變成n(這裡可以用dfs,以邊界上的o為起點,感染與它直接相連的o,將它們都變成n,這就是並查集的體現?)
然後再去遍歷board,把所有的n恢復成o,把所有o給變成x
class solution
board[x][y] = 'n';
dfs(board,x-1,y);
dfs(board,x+1,y);
dfs(board,x,y-1);
dfs(board,x,y+1);
}public void solve(char board)
for(int x=0;x
for(int x=0;x
}} }}
130 被圍繞的區域
題目 給定乙個二維的矩陣,包含 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 解釋 被圍繞的區間...
130 被圍繞的區域
1.所有包含o的邊界上的的格仔,以及它們的鄰居o都不會被包圍,暫時地將這些o標記,通過深度優先搜尋查詢這些o,最後將所有未被標記的o轉換為x class solution def solve self,board list list str none do not return anything,m...
130 被圍繞的區域 DFS
難度 中等 題目描述 解題思路 這道題的思路有點巧妙 y 因為邊界上的o和它相鄰的o一定不會被標記,所以可以用逆向思維,先把所有邊界上的o和和它相鄰的o都標記出來,最後把標記還原,沒標記過的變成x 130.被圍繞的區域 2020 7 18 public void solve char board i...