• leetcode21 surrounded regions


    题目描述

    现在有一个仅包含‘X’和‘O’的二维板,请捕获所有的被‘X’包围的区域
    捕获一个被包围区域的方法是将被包围区域中的所有‘O’变成‘X’
    例如
    X X X X↵X O O X↵X X O X↵X O X X
    执行完你给出的函数以后,这个二维板应该变成:
    X X X X↵X X X X↵X X X X↵X O X X

    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
    class Solution {
    public:
        void solve(vector<vector<char>> &board) {
            if(board.empty())
                return;
            int rows = board.size();
            int cols = board[0].size();
             
            if(rows==0 || cols==0)
                return;
             
            for(int j=0;j<cols;j++)
            {
                DFS(board, 0, j);
                DFS(board, rows-1, j);         }                  for(int i=0;i<rows;i++)         {             DFS(board, i, 0);             DFS(board, i, cols-1);         }                  for(int i=0;i<rows;i++)             for(int j=0;j<cols;j++)                 if(board[i][j] == 'O')                     board[i][j] = 'X';                  for(int i=0;i<rows;i++)             for(int j=0;j<cols;j++)                 if(board[i][j] == '*')                     board[i][j] = 'O';
        }
        void DFS(vector<vector<char> > &board, int r, int c)
        {
            if(board[r][c] == 'O')
            {
                board[r][c] = '*';             int rows = board.size();             int cols = board[0].size();                          if(r > 1)                 DFS(board, r-1, c);             if(r < rows-2)                 DFS(board, r+1, c);             if(c > 1)                 DFS(board, r, c-1);             if(c < cols-2)                 DFS(board, r, c+1);                     }     }
    };






















  • 相关阅读:
    PHP 获取完整URL地址
    竖向 两级手风琴 TAB 栏
    Log4Net 用法记录
    C# 正整数和非零正整数校验
    NewtonSoft对象转json时,把 NULL 转 "" , 过滤 NULL, DateTime 时间类型去除 T
    SQL 事务
    SQL insert 主键冲突
    【记录】无法读取配置节“AppSettings”,因为它缺少节声明
    asp.net 前后台数据交互方式(转)
    php 生成文件txt到指定目录
  • 原文地址:https://www.cnblogs.com/hrnn/p/13438213.html
Copyright © 2020-2023  润新知