问题描述

给定一个二维的矩阵,包含 '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'。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。

代码

class Solution {void def(int i,int j,int[][]res1,char[][]board) {if(i-1>0&&board[i-1][j]=='O'&&res1[i-1][j]==0){res1[i-1][j]=1;def(i-1,j,res1,board);}if(i+1<board.length&&board[i+1][j]=='O'&&res1[i+1][j]==0){res1[i+1][j]=1;def(i+1,j,res1,board);}if(j-1>0&&board[i][j-1]=='O'&&res1[i][j-1]==0){res1[i][j-1]=1;def(i,j-1,res1,board);}if(j+1<board[0].length&&board[i][j+1]=='O'&&res1[i][j+1]==0){res1[i][j+1]=1;def(i,j+1,res1,board);}}public void solve(char[][] board) {if(board==null||board.length==0||board[0].length==0)return;int[][] res1=new int[board.length][board[0].length];int[][] res2=new int[board.length][board[0].length];for(int i=0;i<board.length;i++) {int j=0;if(board[i][j]=='O') {res1[i][j]=1;def(i,j,res1,board);}j=board[0].length-1;if(board[i][j]=='O') {res1[i][j]=1;def(i,j,res1,board);}}for(int j=0;j<board[0].length;j++) {int i=0;if(board[i][j]=='O') {res1[i][j]=1;def(i,j,res1,board);}i=board.length-1;if(board[i][j]=='O') {res1[i][j]=1;def(i,j,res1,board);}}for(int i=0;i<board.length;i++) {for(int j=0;j<board[0].length;j++) {if(board[i][j]=='O'&&res1[i][j]==0) {board[i][j]='X';}}}}
}

Leetcode130. 被围绕的区域(深搜)相关推荐

  1. leetcode--130. 被围绕的区域

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

  2. leetcode130. 被围绕的区域(bfs)

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

  3. leetcode130. 被围绕的区域

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

  4. Leetcode--130. 被围绕的区域(java)

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

  5. Leetcode130.被围绕的区域

    Time: 20190901 Type: Medium 题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' ...

  6. 算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记

    算法学习 (门徒计划)3-3 深搜(DFS)与广搜(BFS)及经典问题 学习笔记 前言 深搜与广搜 搜索的核心概念 问题求解树 搜索剪枝和优化 问题求解树的状态 对比深搜与广搜 DFS-深度(deep ...

  7. Leetcode-搜索-130.被围绕的区域(中等)

    130. 被围绕的区域 题目如下 解题思路 dfs-c++代码(深搜) bfs-c++代码(广搜) 提交对比 题目如下 解题思路 不被包围的肯定有一边在边界,所以我们从边界遍历,边界遍历可以碰到的0是 ...

  8. 深搜(DFS) 广搜(BFS)

    搜索的核心概念 问题求解树 是一种思维逻辑层面的结构,而非程序中的实际存储结构:思维结构可以表示无限的概念 设计搜索算法的核心关键点 设计问题求解树的状态 搜索剪枝和优化 在问题求解树搜索过程中,对于 ...

  9. [深搜]24点--改进版本

    回顾 之前写的版本[深搜回溯]24点,没有考虑到中间数值的可能性,是对数值进行深搜遍历,而不是对数值对进行深搜数值遍历,使得较为复杂的24点运算中有部分数据没办法得到解决.这次的改进将围绕着这个进行. ...

  10. I - 滑雪 POJ - 1088(深搜,记忆化搜索)

    Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑坡. ...

最新文章

  1. 19_debug断点调试
  2. springboot - 应用实践(1)认识springboot
  3. 360浏览器下页面样式显示异常的解决方法
  4. C语言 - 输入x的值,输出y相应的值 x (x<1) y= 2x-1 (1≤x<10) 3x-11 (x≥10)
  5. python中shelf对象_Python对象持久化存储工具pickle
  6. R 回归 虚拟变量na_R语言 | 生存分析之R包survival的单变量和多变量Cox回归
  7. python爬虫怎么下载图片到手机_python爬虫获取京东手机图片的图文教程
  8. powerbuilder的dw中使用graph风格,当横轴是日期时,如何显示才能完整显示日期?
  9. 文法俱乐部 第三章 动词时态
  10. 小程序遇到回车换行怎么处理
  11. Geoffrey Hinton:从神经网络黑暗时代的坚守到今天的胜利
  12. java对接旺店通数据同步
  13. Android开发——Android中的二维码生成与扫描
  14. 一位博士论文的致谢部分
  15. Systemtap学习笔记
  16. 2013年广州盛成php开发工程师第一轮笔试回顾
  17. 吴恩达《深度学习》笔记汇总
  18. 深度学习常用的训练数据集介绍以及下载
  19. Windows Server 2019 设置使用照片查看器查看图片
  20. CEO、COO、CFO、CTO、CIO ?

热门文章

  1. Intel收购半导体设计公司eASIC
  2. mongodb常用操作——命令行
  3. Android 设计模式:(一)策略模式 —— 封装行为的大局观
  4. VC 2010下安装OpenCV2.4.4(来自wiki)
  5. mysql 中的neq_标准中的Eqv、Idt和Neq分别代表什么 详细
  6. 拓端tecdat|TensorFlow 2建立神经网络分类模型——以iris数据为例
  7. class文件如何在linux下打开_Linux下文件的三个时间属性
  8. Android开发教程1~3章笔记
  9. catia如何将曲面加厚变为实体_?在CATIA中快速画一个大众车标
  10. python Process类