130. Surrounded Regions 被围绕的区域
给定一个二维的矩阵,包含 ‘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’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。
DFS
所有的不被包围的 O 都直接或间接与边界上的 O 相连。
- 对于每一个边界上的
O
,我们以它为起点,标记所有与它直接或间接相连的字母O
; - 最后我们遍历这个矩阵,对于每一个字母:
- 如果该字母被标记过,则该字母为没有被字母
X
包围的字母O
,我们将其还原为字母O
; - 如果该字母没有被标记过,则该字母为被字母
X
包围的字母O
,我们将其修改为字母X
。
- 如果该字母被标记过,则该字母为没有被字母
Code
def solve(self, board: List[List[str]]) -> None:"""Do not return anything, modify board in-place instead."""if not board:returndef dfs(x, y):if not 0 <= x < rows or not 0 <= y < cols or board[x][y] != 'O':returnboard[x][y] = 'V'dfs(x + 1, y)dfs(x - 1, y)dfs(x, y + 1)dfs(x, y - 1)rows, cols = len(board), len(board[0])for r in range(rows):dfs(r, 0)dfs(r, cols - 1)for c in range(1, cols - 1):dfs(0, c)dfs(rows - 1, c)for r in range(rows):for c in range(cols):if board[r][c] == 'V':board[r][c] = 'O'elif board[r][c] == 'O':board[r][c] = 'X'
复杂度分析
时间复杂度:O(n×m)O(n \times m)O(n×m),其中 nnn 和 mmm 分别为矩阵的行数和列数。深度优先搜索过程中,每一个点至多只会被标记一次。
空间复杂度:O(n×m)O(n \times m)O(n×m),其中 nnn 和 mmm 分别为矩阵的行数和列数。主要为深度优先搜索的栈的开销。
130. Surrounded Regions 被围绕的区域相关推荐
- 【BFS】LeetCode 130. Surrounded Regions
LeetCode 130. Surrounded Regions Solution1:我的答案 利用bfs解决,超过98.7%的答案,还不错.关键是简单易懂! class Solution { pub ...
- leetcode 130. Surrounded Regions | 130. 被围绕的区域(DFS递归“感染“思路)
题目 https://leetcode.com/problems/surrounded-regions/ 题解 Related Topics 说是并查集问题,然而我并没有用到. 带有 visited ...
- [LeetCode] 130. Surrounded Regions Java
题目:Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A ...
- leetcode @python 130. Surrounded Regions
题目链接 https://leetcode.com/problems/surrounded-regions/ 题目原文 Given a 2D board containing 'X' and 'O', ...
- 130 Surrounded Regions
题目链接:https://leetcode.com/problems/surrounded-regions/ 题目: Given a 2D board containing 'X' and 'O', ...
- 利用BFS和DFS解决 LeetCode 130: Surrounded Regions
问题来源 此题来源于LEETCODE,具体问题详见下面的链接 https://leetcode.com/problems/surrounded-regions/description/ 问题简述 给定 ...
- [Leetcode][第130题][JAVA][被围绕的区域][DFS][BFS]
[问题描述][中等] [解答思路] 1. 深度优先搜索 使用深度优先搜索实现标记操作.在下面的代码中,我们把标记过的字母 O 修改为字母 A. 复杂度 class Solution {int[] dx ...
- 130. Surrounded Regions
题目描述 解题思路==先将不要变的O换为1,再将其余的O变成X,最后再将1变回为O 代码如下 class Solution{ public:void solve(vector<vector< ...
- 130. 被围绕的区域
链接:130. 被围绕的区域 题解:深度优先搜索 class Solution { public:vector<vector<int>> direction{{1, 0},{- ...
最新文章
- 打包tomcat没有xml文件_Spring Boot 项目打包 War 并部署到 Tomcat
- python实现二分查找(折半查找)算法
- centos改动sshport
- xampp打开mysql的admin访问被拒绝_U盘插入电脑提示无法访问?别怕,我找到解决办法了...
- wsl2设置挂载_Windows下的Linux子系统安装,WSL 2下配置docker
- Android还在用Toast?你Out啦,该试试Snackbar了
- .NET Core全新路线图
- 【python简洁之道】-----1. 注释规则
- 五笔输入法的前世今生
- PMP知识点总结-自由时差与总时差
- 0CTF/TCTF2019 Ghost Pepper Writeup
- 机器学习中的过拟合与欠拟合
- python手机端如何下载_过去,哔哩哔哩上面的视频只能在手机上面下载;现在,我用Python爬虫实现了能在PC端上面下载...
- JAVA获取上一年的日期_java获取日期,前一年,前一月,前一周
- 严重: Allocate exception for servlet CustomerServlet java.lang.ClassNotFoundException: cn.itcast.cstm.
- Android 性能优化概述
- 关于Python的静态变量
- hive问题-return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
- 微博登入php,ThinkPHP接入微博登录
- 【社会调研】访谈个案案例分享
热门文章
- mybatis报错invalid types () or values ()解决方法
- zmq中zmq_poll()函数介绍
- python怎么让游戏倒计时_Python如何让倒计时效果的在固定区域刷新
- C语言学习之输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
- linux 指令tftp传输文件_tftp命令_Linux tftp 命令用法详解:在本机和tftp服务器之间使用TFTP协议传输文件...
- 索尔维会议记录软件测试,索尔维会议
- 课堂派派典型用户和场景
- 根据树的两种遍历序列求第三种遍历序列
- idea 新建一个spring项目
- white-space详解