130, Surrounded regions
====
DFS boundary
====
1. 題目是說被1包圍的0 可以被翻牌
=>
沒有碰到邊界的0 可以被翻牌
(有連結到)碰到邊界的0無法被翻牌
2. 從邊界開始找有沒有0
當找到邊界為0, 對它的做DFS(上下左右)
找到的0, 先把它變更符號e.g.#
3. for, for go through
剩下的0是可以翻成1的
剩下的#是不能翻的 翻回0
====
class Solution{
public:
void surroundRegion(vec<vec<char>>&board){
int m=board.size(), n=board[0].size()
for int i=0; i<m; i++
if board[i][0] == 'o'
DFS(board, i, 0, m, n)
if board[i][n-1] == 'o'
DFS(board, i, n-1, m, n)
for int j=0; j<n; j++
if board[0][j] == 'o'
DFS(board, 0, j, m, n)
if board[m-1] == 'o'
DFS(board, m-1, j, m, n)
for i-n
for j-n
if board[i][j] == 'o'
board[i][j] = 'x'
if board[i][j] == '#'
board[i][j] = 'o'
}
void DFS(vec<vec<char>>board, int i, j, m, n){
if i<0 || j<0 || i>=m || j>=n || board(i,j)!='o'
return
board(i,j) = '#'
DFS(i-1, j, m, n)
DFS(i+1, j, m, n)
DFS(i, j-1, m, n)
DFS(I, j+1, m, n
}
沒有留言:
張貼留言