【题目】
【代码】
【方法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. 被围绕的区域相关推荐

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

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

  2. 130. 被围绕的区域

    链接:130. 被围绕的区域 题解:深度优先搜索 class Solution { public:vector<vector<int>> direction{{1, 0},{- ...

  3. 10.13(129. 求根到叶子节点数字之和 130. 被围绕的区域)

    129. 求根到叶子节点数字之和(通过) 思路:递归,前序遍历的应用 效率:100% 程序代码: /*** Definition for a binary tree node.* struct Tre ...

  4. 130.被围绕的区域

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

  5. 【LeetCode】130.被围绕的区域

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

  6. LeetCode 130. 被围绕的区域(图的BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' ...

  7. LeetCode 130 被围绕的区域

    题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O).找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 题解 没有被'X'包围的区域一定在边上,可以从四周 ...

  8. Leetcode 130. 被围绕的区域 解题思路及C++实现

    解题思路: 这是一个典型的深度优先搜索问题,在程序处理过程中,将未被'X'包围的'O'标记为符号'*'. 先遍历数组边界上的字符'O',将其标记为'*',然后对出现'*'的位置,通过递归dfs,遍历其 ...

  9. 【广度优先搜索-中等】1905. 统计子岛屿

    [题目] [代码] [方法1]深度优先 class Solution:def countSubIslands(self, grid1: List[List[int]], grid2: List[Lis ...

最新文章

  1. Spark源码阅读02-Spark核心原理之容错及HA(高可用)
  2. web.config中的session配置详解
  3. SAP Spartacus自定义Component的Not found问题
  4. c/c++ code JSON
  5. Andrew Ng机器学习之一 导论
  6. 在已有数据的linkedList和arrayList集合中在中间位置新插入一条数据谁更快
  7. python中最难的是什么_python什么的最难了
  8. echo 多行_Java中Scanner的用法:单行多行输入
  9. 企业信息化解决方案——插件式平台开发框架
  10. 计蒜客:区间整数操作-区间更新-区间和
  11. 【一天一个C++小知识】006. 浮点数在计算机内部的表示与转换
  12. html字体白色边框黑色效果,css完整总结:第二篇(尺寸,外补白,内补白,边框,背景,颜色,字体,文本,文本装饰)...
  13. Zemax操作25--像差理论和修正(球差、慧差、像散)
  14. 中国菜刀与一句话木马之间的原理分析
  15. 天空的心事,只有云懂
  16. Intel oneAPI Base Toolkit 安装教程(Linux)
  17. YOLOv7移植经验分享
  18. 低版本MacOS安装Nginx
  19. android字体中间横线,Android TextView(EditView)文字底部或者中间 加横线
  20. 百度云盘服务器升级,从云储存工具升级为云操作系统,百度网盘将成为百度5G物联入口...

热门文章

  1. pdf密码解开步骤,pdf权限密码怎么解开?
  2. Nature | 一个水稻雄配子表达的促进胚胎发育的因子可以用于定向通过种子进行无性繁殖
  3. 复现20字符短域名绕过以及xss相关知识点
  4. (大)数据处理:从txt到数据可视化
  5. 转转二手成为趋势所向的二手交易场地
  6. 利用matlab将自己的数据制作为标准VOC数据集格式
  7. 重学 Java 设计模式:实战适配器模式
  8. 解决win10双击.jar包无法运行
  9. 跨域问题的几种解决方案汇总
  10. DM8和PostgreSQL 14对比