• LeetCode-Surrounded Regions


    Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.

    A region is captured by flipping all 'O's into 'X's in that surrounded region .

    For example,

    X X X X
    X O O X
    X X O X
    X O X X
    

    After running your function, the board should be:

    X X X X
    X X X X
    X X X X
    X O X X
    

    不被X包住的情况需要一个在边界上的O,从边界上的O开始DFS即可

    class Solution {
    public:
        void DFS(vector<vector<char> > &board,int i,int j){
            board[i][j]='.';
            if(i>0&&board[i-1][j]=='O')DFS(board,i-1,j);
            if(i<board.size()-1&&board[i+1][j]=='O')DFS(board,i+1,j);
            if(j>0&&board[i][j-1]=='O')DFS(board,i,j-1);
            if(j<board[0].size()-1&&board[i][j+1]=='O')DFS(board,i,j+1);
        }
        void solve(vector<vector<char>> &board) {
            // Note: The Solution object is instantiated only once and is reused by each test case.
            if(board.size()==0||board[0].size()==0)return;
            //set four boundaries
            int m=board[0].size();
            int n=board.size();
            for(int i=0;i<m;i++)if(board[0][i]=='O')DFS(board,0,i);
            for(int i=0;i<m;i++)if(board[n-1][i]=='O')DFS(board,n-1,i);
            for(int i=0;i<n;i++)if(board[i][0]=='O')DFS(board,i,0);
            for(int i=0;i<n;i++)if(board[i][m-1]=='O')DFS(board,i,m-1);
            for(int i=0;i<n;i++)
            for(int j=0;j<m;j++){
                if(board[i][j]=='O')board[i][j]='X';
                else if(board[i][j]=='.')board[i][j]='O';
            }
        }
    };
    View Code
  • 相关阅读:
    内置函数(少量)
    画国旗(尺寸不标准)
    测试题——程序
    乱码笔记2--字典
    列表
    课堂笔记 ——————乱
    如何利用pip安装国内镜像源
    pip常用指令
    pip卸载
    pip简介
  • 原文地址:https://www.cnblogs.com/superzrx/p/3357126.html
Copyright © 2020-2023  润新知