leetcode筆記 130被圍繞的區域

2021-09-08 13:03:21 字數 1020 閱讀 8495

題目:

給定乙個二維的矩陣,包含'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'。如果兩個元素在水平或垂直方向相鄰,則稱它們是「相連」的。

思路:網上找到的**的執行時間都挺長的,直接看leetcode中執行最快的**。

**:以下的**主要是將所有的位置分為三部分處理。一部分是行的邊界,一部分是列的邊界,另一部分是中間的部分。對於位於邊界上的元素,首先檢查其是否為0(使用函式dfs),不為0的直接返回,為0的話將其標記為q並且繼續檢查該元素的臨近元素,查詢是否存在和它相鄰的同為0的元素並進行標記。這裡使用了遞迴的思想。這用處理完邊界的元素之後,邊界和與邊界上的0相連的元素全部標記為q,中間0的元素標記還是為0.只需要將還是為0的元素變為x,將為q的元素變為0就可以了。

執行最快的**:

class solution 

public void solve(char board)

for (int i=0;ifor (int i=0;ifor (int j=0;j}

}

LeetCode130 被圍繞的區域

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

Leetcode130 被圍繞的區域

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

leetcode 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解釋 被圍繞的區間不會存在於...