LeetCode130 被圍繞的區域

2021-08-21 20:49:23 字數 1405 閱讀 2961

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

題目分析:本題有兩種思路,第一種思路比較容易想到,就是遍歷非邊緣的點,如果是『o』,就將與這個點相連的o點都找出來,如果發現某個相連的o點在邊緣上,則表示不能被x圍起來,則保持不動。但是如果相連的o點都能被x包起來,則將它們變為x,前提是要將途經的o點存起來。

**展示:

class solution 

if(board[i][j]=='x' || visited[i][j])

return;

if(i==0 || i==board.size()-1 || j==0 || j==board[0].size()-1)

visited[i][j] = 1;

vec.push_back(i);

vec.push_back(j);

if(board[i-1][j]=='o')

judge(board,i-1,j,vec,flag,visited);

if(board[i][j-1]=='o')

judge(board,i,j-1,vec,flag,visited);

if(board[i+1][j]=='o')

judge(board,i+1,j,vec,flag,visited);

if(board[i][j+1]=='o')

judge(board,i,j+1,vec,flag,visited);

}};

方法二:有點反其道而之的意思,從四周邊緣開始,將與o相連的點都賦值為l,然後遍歷整個board,沒有被賦為l的點(要麼是x,要麼是被x包圍的o點)都是x,最後將l變為o即可。

**展示:

class solution 

};

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

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