2022年1月25日 星期二

130, Surrounded regions


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
}

沒有留言:

張貼留言