問題:
輸入乙個矩陣,將被x字元包圍的o字元全部替換為x,但是如果某個o字元處於矩陣的邊界,則該o字元及其連線的所有o字元都不變。
輸出替換後的矩陣。
思路:先遍歷矩陣每乙個字元,當發現o字元,則利用深搜方式找出與之相連的所有o字元。
每找出乙個o字元,則先將其改為x字元,並將相連線的四個方向的o字元的座標存入search棧中。並且將這個替換後的字元的座標,儲存在recover棧中。
在搜尋相連線的o字元時,如果發現所連線的是邊界字元,則說明這次找到的o字元區域,是不需要改變的,但是因為我們之前都改為x了(為了避免重複搜尋字元),所以最後的時候,將找到的這部分字元區域,重新標記為f字元。
最後在檢索完所有字元區域後,就將f字元恢復為o字元。
**:
1class
solution 12}
13}14for (int i = 0; i < rows; i++) 19}
20}21}
22void searchandrecover(vectorchar>>& board, int x, int
y) , , , };
27bool need_recovery = false;28
//store the original one
29 pairorigin(x, y);
30searching.push_back(origin);
31while (!searching.empty())
46else49}
50}51}
52if
(need_recovery) 58}
59}60private:61
introws;
62int
cols;
63 vectorint, int>>searching;
64 vectorint, int>>recover;
65 };
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...