题目描述

给定一个二维的矩阵,包含 'X' 和 'O'字母 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

解释:

被围绕的区间不会存在于边界上,换句话说,任何边界上的 'O' 都不会被填充为 'X'。 任何不在边界上,或不与边界上的 'O' 相连的 'O' 最终都会被填充为 'X'。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。

解题思路

分为两步:

  • 首先对矩阵四条边界上的所有'O'进行深度优先搜索,并将所有与边界相连区域的'O'填充为'#'
  • 然后遍历整个矩阵,将当前所有'O',即处在被 'X' 围绕的区域的'O'填充为'X',并将上一步填充的所有'#'还原为'O'

代码

 class Solution {
public:
void solve(vector<vector<char>>& board) {
if(board.empty() || board[].empty()) return;
int rows = board.size(), cols = board[].size();
for(int i = ; i < cols; i++){
if(board[][i] == 'O') fillBorder(board, , i);
if(board[rows - ][i] == 'O') fillBorder(board, rows - , i);
}
for(int i = ; i < rows; i++){
if(board[i][] == 'O') fillBorder(board, i, );
if(board[i][cols - ] == 'O') fillBorder(board, i, cols - );
}
for(int i = ; i < rows; i++){
for(int j = ; j < cols; j++){
if(board[i][j] == 'O') board[i][j] = 'X';
if(board[i][j] == '#') board[i][j] = 'O';
}
}
}
void fillBorder(vector<vector<char>>& board, int row, int col){
board[row][col] = '#';
if(row - >= && board[row - ][col] == 'O') fillBorder(board, row - , col);
if(row + < board.size() && board[row + ][col] == 'O') fillBorder(board, row + , col);
if(col - >= && board[row][col - ] == 'O') fillBorder(board, row, col - );
if(col + < board[].size() && board[row][col + ] == 'O') fillBorder(board, row, col + );
}
};

LeetCode 130. 被围绕的区域(Surrounded Regions)的更多相关文章

  1. Java实现 LeetCode 130 被围绕的区域

    130. 被围绕的区域 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O ...

  2. [Swift]LeetCode130. 被围绕的区域 | Surrounded Regions

    Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...

  3. 286被围绕的区域 · Surrounded Regions

    [抄题]: 给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满. 样例 给出二维矩阵: X X X X X O O X X X O X X O X X ...

  4. [LeetCode] 130. 被围绕的区域

    题目链接 : https://leetcode-cn.com/problems/surrounded-regions/ 题目描述: 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有 ...

  5. Leetcode之深度优先搜索(DFS)专题-130. 被围绕的区域(Surrounded Regions)

    Leetcode之深度优先搜索(DFS)专题-130. 被围绕的区域(Surrounded Regions) 深度优先搜索的解题详细介绍,点击 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O) ...

  6. [LeetCode] 130. Surrounded Regions 包围区域

    Given a 2D board containing 'X' and 'O'(the letter O), capture all regions surrounded by 'X'. A regi ...

  7. 130 Surrounded Regions 被围绕的区域

    给定一个二维的矩阵,包含 'X' 和 'O'(字母 O), 找到所有被 'X' 围绕的区域.并将区域里所有 'O'用 'X' 填充.例如,X X X XX O O XX X O XX O X X运行你 ...

  8. [LeetCode] Surrounded Regions 包围区域

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

  9. 验证LeetCode Surrounded Regions 包围区域的DFS方法

    在LeetCode中的Surrounded Regions 包围区域这道题中,我们发现用DFS方法中的最后一个条件必须是j > 1,如下面的红色字体所示,如果写成j > 0的话无法通过OJ ...

随机推荐

  1. ASP.NET 打包发布中没有Visual Studio Installer

    环境:win7 64位 : VisualStudio2015 问题描述 创建安装程序时,VisualStudio中没有打包安装程序的Visual Studio Installer功能 解决方法 下载V ...

  2. MySQL导出数据到文件中

    一.导出一张表数据 把test_time表中的数据导出成txt 文件 mysql> show global variables like '%secure%'; +--------------- ...

  3. 读书笔记《SpringBoot编程思想》

    目录 一. springboot总览 1.springboot特性 2.准备运行环境 二.理解独立的spring应用 1.应用类型 2.@RestController 3.官网创建springboot ...

  4. DA_04_解决Xshell中文乱码问题

    一:解决Xshell中文乱码问题      二:解决克隆后eth0不见的问题 2.1:虚拟机克隆步骤:          1.直接修改  /etc/sysconfig/network-script/i ...

  5. luogu1261 服务器储存信息问题[最短路]

    首先$O(n^2\log n)$暴力很好想,直接每个点出发跑一遍最短路,排$dis$统计一下即可.考虑怎么优化.发现$rank$很小,考虑从$rank$入手.换一种统计方法,看每个点$x$如果作为别的 ...

  6. 卸载nginx

    sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件. sudo apt-get purge nginx nginx-common # ...

  7. k8s安装flannel报错“node "master" pod cidr not assigned”

    一.在安装flannel网络插件后,发现pod: kube-flannel-ds 一直是CrashLoopBackOff 此报错是因为安装Kubeadm Init的时候,没有增加 --pod-netw ...

  8. 页面初次渲染loading图

    当第一次进入页面时,可能由于网速或其他原因请求接口需要等待很长时间,这是页面一片空白,很难看,切交互性也不好,这是,我们常常放上一个loading等待图给用户以反馈 // 页面尚未加载时的loadin ...

  9. 5 LAMP配置管理:模块(state、file、pkg、service)、jinja模板、job管理、redis主从

    1. 配置管理:state和file https://docs.saltstack.com/en/latest/topics/states/index.html Full list of states ...

  10. mybatis insert into 返回id

    <insert id="saveComplaint" useGeneratedKeys="true" parameterType="com.fo ...