每日一题(leetcode bfs130)--被围绕的区域

先把与边界连通的找出来 在找那些被封闭的  dfs结局方案:

class Solution {
    int check(vector<vector<char>> board,int i,int j){
        int r=board.size();
        int c=board[0].size();
        if(i==0 || i==r-1 ||j==0 || j==c-1){
            return 1;
        }
        return 0;
    }
    void dfs1(vector<vector<char>>& board,int i,int j){
        int r=board.size();
        int c=board[0].size();
        if(i<0 ||i>=r ||j<0 ||j>=c){
            return ;
        }
        if(board[i][j]=='O'){
            board[i][j]='#';
        }
        else if(board[i][j]=='#' || board[i][j]=='X'){
            return ;
        }
        dfs1(board,i+1,j);
        dfs1(board,i-1,j);
        dfs1(board,i,j+1);
        dfs1(board,i,j-1);
    }
    void dfs2(vector<vector<char>>& board,int i,int j){
        int r=board.size();
        int c=board[0].size();
        if(i<0 ||i>=r ||j<0 ||j>=c){
            return ;
        }
        if(board[i][j]=='O'){
            board[i][j]='X';
        }
        else if(board[i][j]=='#' || board[i][j]=='X'){
            return ;
        }
        dfs2(board,i+1,j);
        dfs2(board,i-1,j);
        dfs2(board,i,j+1);
        dfs2(board,i,j-1);
    }
public:


    void solve(vector<vector<char>>& board) {
        int r=board.size();
        int c=board[0].size();
        for(int i =0;i<r;i++){
            for(int j=0;j<c;j++){
                if(board[i][j]=='O' && check(board,i,j)==1){
                    dfs1(board,i,j);
                }
            }
        }

        for(int i =0;i<r;i++){
            for(int j=0;j<c;j++){
                if(board[i][j]=='O' && check(board,i,j)==0){
                    dfs2(board,i,j);
                }
            }
        }
        for(int i =0;i<r;i++){
            for(int j=0;j<c;j++){
                if(board[i][j]=='#' ){
                    board[i][j]='O';
                }
            }
        }

    }
};

相关推荐

  1. 【DFS】130.围绕区域

    2024-04-09 01:28:02       55 阅读
  2. 力扣:130. 围绕区域

    2024-04-09 01:28:02       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 01:28:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 01:28:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 01:28:02       82 阅读
  4. Python语言-面向对象

    2024-04-09 01:28:02       91 阅读

热门阅读

  1. vue中绑定

    2024-04-09 01:28:02       29 阅读
  2. 双击返回键,轻松处理 WebView 中的后退事件

    2024-04-09 01:28:02       30 阅读
  3. 学习总结!

    2024-04-09 01:28:02       37 阅读
  4. 斜杠青年/程序员如何搞副业?

    2024-04-09 01:28:02       28 阅读
  5. 解密Elbie勒索病毒:应对威胁的有效方法

    2024-04-09 01:28:02       39 阅读