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