leetcode130

class Solution {
public:
    int dx[4] = {0,-1,0,1};
    int dy[4] = {-1,0,1,0};
    void solve(vector<vector<char>>& board) {
        if(board.empty()) return;
        vector<vector<bool>>vis(board.size(),vector<bool>(board[0].size(),0));
        for(int i = 0;i<board.size();i++)
        {
            dfs(i,0,board,vis);
            dfs(i,board[i].size()-1,board,vis);
        }
        for(int j = 0;j<board[0].size();j++)
        {
            dfs(0,j,board,vis);
            dfs(board.size()-1,j,board,vis);
        }
        
        for(int i = 0;i<board.size();i++)
        {
            for(int j = 0;j<board[i].size();j++)
            {
                if(board[i][j] == 'A') board[i][j] = 'O';
                else board[i][j] = 'X';
            }
        }
    }
    
    void dfs(int x,int y,vector<vector<char>>& board,vector<vector<bool>>vis)
    {
        if(board[x][y] == 'O' && !vis[x][y])
        {
            board[x][y] = 'A';
            vis[x][y] = true;
            for(int i = 0;i<4;i++)
            {
                int nx = x + dx[i];
                int ny = y + dy[i];
                if(nx>=0 && nx <board.size() && ny >=0 && ny < board[0].size())
                    dfs(nx,ny,board,vis);
            }
        }
    }
};

 

發佈了457 篇原創文章 · 獲贊 19 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章