生活随笔
收集整理的這篇文章主要介紹了
LeetCode 130 被围绕的区域
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
給定一個二維的矩陣,包含
'X' 和
'O'(字母 O)。找到所有被
'X' 圍繞的區域,并將這些區域里所有的
'O' 用
'X' 填充。
題解
沒有被
'X'包圍的區域一定在邊上,可以從四周出發,將沒有被包圍的區域找到,剩下的就是
被包圍的區域。
代碼
class Solution
{
public
:void solve(vector
<vector
<char>>& board
) {int m
=board
.size();if (!m
) return ;int n
=board
[0].size();for (int i
=0;i
<m
;i
++){for (int j
=0;j
<n
;j
++){if (board
[i
][j
]=='O'&&(i
==0||j
==0||i
==m
-1||j
==n
-1)){board
[i
][j
]='A';dfs(board
,i
,j
,m
,n
); }}}for (int i
=0;i
<m
;i
++){for (int j
=0;j
<n
;j
++){if (board
[i
][j
]=='A') board
[i
][j
]='O';else if (board
[i
][j
]=='O') board
[i
][j
]='X';}}}int dir
[4][2]={0,1,0,-1,-1,0,1,0};void dfs(vector
<vector
<char>> &board
,int x
,int y
,int m
,int n
){for (int i
=0;i
<4;i
++){int xx
=x
+dir
[i
][0];int yy
=y
+dir
[i
][1];if (xx
>=m
||xx
<0||yy
>=n
||yy
<0) continue;if (board
[xx
][yy
]=='O'){board
[xx
][yy
]='A';dfs(board
,xx
,yy
,m
,n
);}}}
};
總結
以上是生活随笔為你收集整理的LeetCode 130 被围绕的区域的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。