Leetcode130.被围绕的区域
Time: 20190901
Type: Medium
题目描述
给定一个二维的矩阵,包含 ‘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’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/surrounded-regions
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
处理思路是将外围的O
单独思考。
X X X X
X O O X
X X O X
X O O X
从边界上的O
开始DFS,如果能被探索到的表示和边界上的O
相连,直到不相连的结束,相连的话就转成#
保护起来。最后统一处理。
代码
class Solution:def solve(self, board: List[List[str]]) -> None:"""Do not return anything, modify board in-place instead."""if board == None or len(board) == 0:returnrow = len(board)col = len(board[0])# 剪枝: 小于3行的,都有气口,没有元素被包围if row < 3 or col < 3:returnfor i in range(row):self.dfs(board, i, 0)self.dfs(board, i, col - 1)for j in range(col):self.dfs(board, 0, j)self.dfs(board, row - 1, j)print(board)for i in range(row):for j in range(col):if board[i][j] == 'O':board[i][j] = 'X'if board[i][j] == '#':board[i][j] = 'O''''X X X XX O O XX X O XX O O XX X X XX O O XX X O XX O X X'''def dfs(self, board, i, j):if board == None:returnrow = len(board)col = len(board[0]) if i < 0 or i >= row or j < 0 or j >= col or board[i][j] != 'O':return # 结束蔓延board[i][j] = '#' # 探索到的元素没有到达递归结束条件就表示连上了气口# 递归拆解:上下左右探索self.dfs(board, i - 1, j)self.dfs(board, i + 1, j)self.dfs(board, i, j - 1)self.dfs(board, i, j + 1)
相似题目
Leetcode 79. 单词搜索
Leetcode 200.岛屿的个数
END.
Leetcode130.被围绕的区域相关推荐
- leetcode--130. 被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- leetcode130. 被围绕的区域(bfs)
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- leetcode130. 被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- Leetcode--130. 被围绕的区域(java)
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- 130.被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- 被围绕的区域(dfs)
原创公众号:bigsai 欢迎加入力扣打卡 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' ...
- 【LeetCode】130.被围绕的区域
一.题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 二.示例 示例: X X X X X O O ...
- 130. Surrounded Regions 被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- 算法题目——被围绕的区域(dfs,bfs)
leetcode.130被围绕的区域 dfs解法: 深度优先遍历: 思路: 读取数据后 1.先将数据的四周进行bfs算法(因为只有与外围接触的点,才能不被包围) 算法执行中时,递归看看该点的上下左右有 ...
最新文章
- spring @component的作用
- Java数据类型中String、Integer、int相互间的转换
- eclipse问题 - windows版
- flutter 图解_Flutter自绘组件:微信悬浮窗(三)
- 数据结构排序法之鸡尾酒排序法he快速排序法
- 学习《PythonWeb开发实战(董伟明)》中文PDF+源代码
- 电子商务专业需要考计算机证吗,电子商务必考的证有哪些
- 2-docker 安装
- SQLException:The server time zone value is unrecognized
- 美国人与欧洲人为什么都吃转基因食品?
- ETH基金会社区经理:以太坊改进流程EIP-1正在更新
- Javascript特效:天猫导航
- 365Key今天不能用了,感觉不爽
- S7-200SMART案例分析——伺服选型(一)
- 换掉7z-zip默认的ico图标,自定义压缩文件图标更美观。
- Proxmox VE的初试小探
- SQL SERVER/ROW_NUMBER() OVER (ORDER BY id)高效分页
- android killer java_android killer无法查看java源代码的解决方法
- 400 : perceived to be a client error 错误
- 在Ubuntu16.04下配置VSFTPD
热门文章
- python实验报告内容实现购物车系统_Python实现的购物车功能示例
- android date 组件,Android中TimePicker与DatePicker时间日期选择组件的使用实例
- 计算机课程设计评分表,课程设计的评分标准.doc
- 液晶显示屏怎么显示泰文_什么是LCD液晶显示屏
- dnspod ddns 下载_简约时尚休闲女装毛衣针织衫春装详情页_psd素材免费下载_ 750*13450像素(编号:24815329)...
- 文件的记录c语言程序,急求如何将下列C语言程序数据存储到文件中?
- StackedGAN详解与实现(采用tensorflow2.x实现)
- Java InputStream转换为String
- java方法_Java方法
- 随机数生成器python_Python中的随机数生成器