【广度优先搜索-中等】130. 被围绕的区域
【题目】
【代码】
【方法1】
对矩阵的四条边进行遍历,对于边上“O”的点深度优先搜索,将预期相连的所有“O”点全部在原存储空间上标记为“A”点(或者其他除“O”、“X”之外的点)
处理完成之后,遍历矩阵的每个元素,对矩阵中所有标记为“A”点的还原成原来的“O”点
将“O”点替换成“X”点即可完成对被围绕区域的替换
class Solution:def solve(self, board: List[List[str]]) -> None:if not board:returndef dfs(x,y):if not 0<=x<len(board) or not 0<=y<len(board[0]) or board[x][y]!="O":returnboard[x][y]="A"dfs(x-1,y)dfs(x+1,y)dfs(x,y+1)dfs(x,y-1)for i in range(len(board)):dfs(i,0)dfs(i,len(board[0])-1)for i in range(len(board[0])):dfs(0,i)dfs(len(board)-1,i)for i in range(len(board)):for j in range(len(board[0])):if board[i][j]=="A":board[i][j]="O"elif board[i][j]=="O":board[i][j]="X"
【方法2】自创方法 时空复杂度都差很多
class Solution:def solve(self, board: List[List[str]]) -> None:visited=[[0 for i in range(len(board[0]))] for i in range(len(board))]cnt=0def dfs(x,y):if x>=0 and x<len(board) and y>=0 and y<len(board[0]) and board[x][y]=="O" and visited[x][y]==0:if x==0 or x==(len(board)-1) or y==0 or y==(len(board[0])-1):return Falsevisited[x][y]=1self.tmp.append((x,y))ans1=dfs(x-1,y)ans2=dfs(x+1,y)ans3=dfs(x,y+1)ans4=dfs(x,y-1)return True and ans1 and ans2 and ans3 and ans4if x>=0 and x<len(board) and y>=0 and y<len(board[0]):return Truereturn Falsefor i in range(len(board)):for j in range(len(board[0])):if board[i][j]=="O" and visited[i][j]==0:self.tmp=[]res=dfs(i,j)if res:for x,y in self.tmp:board[x][y]="X"return cnt
【广度优先搜索-中等】130. 被围绕的区域相关推荐
- Leetcode-搜索-130.被围绕的区域(中等)
130. 被围绕的区域 题目如下 解题思路 dfs-c++代码(深搜) bfs-c++代码(广搜) 提交对比 题目如下 解题思路 不被包围的肯定有一边在边界,所以我们从边界遍历,边界遍历可以碰到的0是 ...
- 130. 被围绕的区域
链接:130. 被围绕的区域 题解:深度优先搜索 class Solution { public:vector<vector<int>> direction{{1, 0},{- ...
- 10.13(129. 求根到叶子节点数字之和 130. 被围绕的区域)
129. 求根到叶子节点数字之和(通过) 思路:递归,前序遍历的应用 效率:100% 程序代码: /*** Definition for a binary tree node.* struct Tre ...
- 130.被围绕的区域
给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X O X X ...
- 【LeetCode】130.被围绕的区域
一.题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 二.示例 示例: X X X X X O O ...
- LeetCode 130. 被围绕的区域(图的BFS/DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' ...
- LeetCode 130 被围绕的区域
题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O).找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 题解 没有被'X'包围的区域一定在边上,可以从四周 ...
- Leetcode 130. 被围绕的区域 解题思路及C++实现
解题思路: 这是一个典型的深度优先搜索问题,在程序处理过程中,将未被'X'包围的'O'标记为符号'*'. 先遍历数组边界上的字符'O',将其标记为'*',然后对出现'*'的位置,通过递归dfs,遍历其 ...
- 【广度优先搜索-中等】1905. 统计子岛屿
[题目] [代码] [方法1]深度优先 class Solution:def countSubIslands(self, grid1: List[List[int]], grid2: List[Lis ...
最新文章
- Spark源码阅读02-Spark核心原理之容错及HA(高可用)
- web.config中的session配置详解
- SAP Spartacus自定义Component的Not found问题
- c/c++ code JSON
- Andrew Ng机器学习之一 导论
- 在已有数据的linkedList和arrayList集合中在中间位置新插入一条数据谁更快
- python中最难的是什么_python什么的最难了
- echo 多行_Java中Scanner的用法:单行多行输入
- 企业信息化解决方案——插件式平台开发框架
- 计蒜客:区间整数操作-区间更新-区间和
- 【一天一个C++小知识】006. 浮点数在计算机内部的表示与转换
- html字体白色边框黑色效果,css完整总结:第二篇(尺寸,外补白,内补白,边框,背景,颜色,字体,文本,文本装饰)...
- Zemax操作25--像差理论和修正(球差、慧差、像散)
- 中国菜刀与一句话木马之间的原理分析
- 天空的心事,只有云懂
- Intel oneAPI Base Toolkit 安装教程(Linux)
- YOLOv7移植经验分享
- 低版本MacOS安装Nginx
- android字体中间横线,Android TextView(EditView)文字底部或者中间 加横线
- 百度云盘服务器升级,从云储存工具升级为云操作系统,百度网盘将成为百度5G物联入口...