LC 130 被環繞區域

2022-08-31 04:27:10 字數 1062 閱讀 2390

問題:

輸入乙個矩陣,將被x字元包圍的o字元全部替換為x,但是如果某個o字元處於矩陣的邊界,則該o字元及其連線的所有o字元都不變。

輸出替換後的矩陣。

思路:先遍歷矩陣每乙個字元,當發現o字元,則利用深搜方式找出與之相連的所有o字元。

每找出乙個o字元,則先將其改為x字元,並將相連線的四個方向的o字元的座標存入search棧中。並且將這個替換後的字元的座標,儲存在recover棧中。

在搜尋相連線的o字元時,如果發現所連線的是邊界字元,則說明這次找到的o字元區域,是不需要改變的,但是因為我們之前都改為x了(為了避免重複搜尋字元),所以最後的時候,將找到的這部分字元區域,重新標記為f字元。

最後在檢索完所有字元區域後,就將f字元恢復為o字元。

**:

1

class

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...