当前位置: 首页 > news >正文

【leetcode热题】被围绕的区域

  • 难度: 中等
  • 通过率: 21.6%
  • 题目链接:. - 力扣(LeetCode)

题目描述

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

解法:

先从四个边缘做深度优先搜索,把与边缘上的 O 相连的位置标记为 *。然后对整个 board 遍历,把 O 设为 X,把 * 设为 O

class Solution:def solve(self, board) -> None:if not board:returnn_row = len(board)n_col = len(board[0])for i in range(n_row):self.dfs(i, 0, board)self.dfs(i, n_col-1, board)for i in range(n_col):self.dfs(0, i, board)self.dfs(n_row-1, i, board)for row in range(n_row):for col in range(n_col):ch = board[row][col]if ch == 'O':board[row][col] = 'X'if ch == '*':board[row][col] = 'O'def dfs(self, row, col, board):n_row = len(board)n_col = len(board[0])if row < 0 or row >= n_row:returnif col < 0 or col >= n_col:returnch = board[row][col]if ch == 'X' or ch == '*':returnboard[row][col] = '*'self.dfs(row-1, col, board)self.dfs(row+1, col, board)self.dfs(row, col-1, board)self.dfs(row, col+1, board)

相关文章:

  • 浅谈密码学
  • ABB双语言共享充电宝投资理财源码/共享充电宝系统源码/共享充电宝市场分析/五级分销返利+地图显示模式
  • Newtonsoft.Json
  • Linux tload 命令教程:实时监控系统负载(附案例详解和注意事项)
  • 铝型材【欧标】
  • Leetcoder Day32| 贪心算法part05
  • 【Vue3】深入理解Vue中的ref属性
  • Sora引发安全新挑战
  • k8s 存储卷详解与动静部署详解
  • Debezium发布历史161
  • Linux命令行与shell脚本编程大全-2.2
  • 【C++】结构体
  • express+mysql+vue,从零搭建一个商城管理系统7--文件上传,大文件分片上传
  • Ps:海绵工具
  • OpenAI 中文文档
  • [数据结构]链表的实现在PHP中
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【知识碎片】第三方登录弹窗效果
  • Fastjson的基本使用方法大全
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • js写一个简单的选项卡
  • node入门
  • python docx文档转html页面
  • Python打包系统简单入门
  • 分布式熔断降级平台aegis
  • 如何选择开源的机器学习框架?
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 云大使推广中的常见热门问题
  • !!Dom4j 学习笔记
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #每日一题合集#牛客JZ23-JZ33
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (arch)linux 转换文件编码格式
  • (day 12)JavaScript学习笔记(数组3)
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (接口封装)
  • (理论篇)httpmoudle和httphandler一览
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (生成器)yield与(迭代器)generator
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (译)2019年前端性能优化清单 — 下篇
  • (转载)hibernate缓存
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • **PHP二维数组遍历时同时赋值
  • *p++,*(p++),*++p,(*p)++区别?
  • . Flume面试题
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .gitignore文件_Git:.gitignore
  • .htaccess配置重写url引擎
  • .NET 4.0中的泛型协变和反变
  • .net 发送邮件
  • .net 使用ajax控件后如何调用前端脚本
  • .net下简单快捷的数值高低位切换