原题链接https://leetcode.com/problems/surrounded-regions/

题目描述

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

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

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

Explanation:

Surrounded regions shouldn’t be on the border, which means that any ‘O’ on the border of the board are not flipped to ‘X’. Any ‘O’ that is not on the border and it is not connected to an ‘O’ on the border will be flipped to ‘X’. Two cells are connected if they are adjacent cells connected horizontally or vertically.

思路分析

把二维矩阵里的中间的O变成X,四周的X保留。
把四周的O标记,暂时记为T,然后把O变成X,T变回O,bingo

源码附录

class Solution {
public void solve(char[][] board) {
if(board == null || board.length == 0 || board[0].length == 0)
{
return;
} int col = board[0].length;
int row = board.length; for(int i=0;i<col;i++)
{
if(board[0][i] == 'O'){
dfs(board,0,i);
}
if(board[row-1][i] == 'O')
{
dfs(board,row-1,i);
}
}
for(int i=0;i<row;i++)
{
if(board[i][0] == 'O')
{
dfs(board,i,0);
}
if(board[i][col-1] == 'O')
{
dfs(board,i,col-1);
}
} for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
if(board[i][j] == 'T')
{
board[i][j] = 'O';
}
else if(board[i][j] == 'O')
{
board[i][j] = 'X';
} }
}
} public void dfs(char[][] board,int m,int n)
{
if(n < 0 || n >= board[0].length || m < 0 || m >= board.length || board[m][n] != 'O')
{
return;
} board[m][n] = 'T';
dfs(board,m -1,n);
dfs(board,m + 1,n);
dfs(board,m,n-1);
dfs(board,m,n+1);
}
}

Surrounded Regions——LeetCode进阶路的更多相关文章

  1. Surrounded Regions——LeetCode

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

  2. Surrounded Regions leetcode java

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

  3. Surrounded Regions - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 https://leetcode.com/problems/surrounded-regions/ 注意点 边缘不算包围'O' 解法 解法一:dfs.找处 ...

  4. [LeetCode] Surrounded Regions 包围区域

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

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

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

  6. 【LeetCode】130. Surrounded Regions (2 solutions)

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

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

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

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

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

  9. 【leetcode】Surrounded Regions

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

  10. leetcode 200. Number of Islands 、694 Number of Distinct Islands 、695. Max Area of Island 、130. Surrounded Regions

    两种方式处理已经访问过的节点:一种是用visited存储已经访问过的1:另一种是通过改变原始数值的值,比如将1改成-1,这样小于等于0的都会停止. Number of Islands 用了第一种方式, ...

随机推荐

  1. 傻妞教程——对接PagerMaid-Pyro

    PagerMaid-Pyro 是一个开源的 TG 人形自走 Bot 方案,功能强大而丰富,可以帮助你打造专属的便利功能. 为什么叫人形机器人? TG 官方是有 Bot Api 的,但是这个 Api 需 ...

  2. Windows 提权-不安全的 GUI 程序

    本文通过 Google 翻译 Insecure GUI Applications – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进 ...

  3. AXUI前端框架v3版本已经发布,底层完全改写,基于原生技术标准,想走得更远!

    AXUI的v3版本已经发布! AXUI框架已经经历了第一代和第二代的迭代,充分认识到纯CSS和HTML的局限性,也意识到过多手动编写代码会影响用户体验.因此,AXUI的目标是:既满足原生前端的标准,又 ...

  4. go time时间格式化

    时间戳与时间格式相互转化 例一 // 时间戳转时间 str_time := time.Unix(1617279282,0).Format("2006-01-02 15:04:05" ...

  5. 几个技巧,教你去除文章的 AI 味!

    最近有不少朋友在利用 AI 写毕业设计论文,几秒钟一篇文章就刷出来的,爽的飞起. 结果万万没想到,人家论文查重服务也升级了,是不是用 AI 写的论文大概率都能被查出来... 这可如何是好啊?救救我救救 ...

  6. CENTOS 7 使用Docker安装oracle 11g

    1.docker第一次安装失败,下一次会提示同名的容器已经存在,解决办法: docker container ls -a 根据上面执行的接口,选择一个containerid,然后带入到下面的命令 do ...

  7. delphi Wmi 获取操作系统信息

    uses ActiveX, ComObj; function GetWMIProperty(WMIProperty: string): string; var Wmi, Objs, Obj: OleV ...

  8. 【JDBC第5章】批量插入

    第5章:批量插入 5.1 批量执行SQL语句 当需要成批插入或者更新记录时,可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理.通常情况下比单独提交处理更有效率 JDBC的 ...

  9. .ocx注册失败以及IE使用获取不到.ocx方法的解决办法

    小伙伴写了个.ocx给我,来实现在IE里用<object>获取,并用js调用.ocx的方法去控制XX硬件 Error[1],.ocx注册失败,提示如下: 解决[1]如下: 首先需要下载个工 ...

  10. datasnap的监督功能【2】-管理Session

    1.服务端的Session是有TDSSession定义的.TDSSession提供了许多有用的方法和特性,再开发室取得服务or重要信息. 如Session状态.安排Session独享定时or自动执行工 ...