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

LeetCode 130. 被围绕的区域

题目链接:130. 被围绕的区域

题目描述

给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。

示例1:
示例1

输入:board = [[“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’。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。

示例2:

输入:board = [[“X”]]
输出:[[“X”]]

题目分析

可以先处理从边界向内蔓延的O,将这些O替换成其他字符,没有没替换的O就是被X围绕的O,然后整个遍历,将特殊字符替换为O,将被围绕的O替换为X。

代码

class Solution {public void solve(char[][] board) {if (board.length == 0) {return;}// 初始化长宽int m = board.length, n = board[0].length;// 遍历左右两边的边界for (int i = 0; i < m; i++) {dfs(board, i, 0);dfs(board, i, n - 1);}// 遍历上下边界,四个端点上次已经遍历过了for (int j = 1; j < n - 1; j++) {dfs(board, 0, j);dfs(board, m - 1, j);}// 遍历将 A 染为 O ,将 O 染为 Xfor (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (board[i][j] == 'A') {board[i][j] = 'O';} else if (board[i][j] == 'O') {board[i][j] = 'X';}}}}void dfs(char[][] board, int i, int j) {// 处理边界情况,如果为 O 则染为 Aif (i >= 0 && j >= 0 && i < board.length && j < board[0].length && board[i][j] == 'O') {board[i][j] = 'A';// 染色上下左右dfs(board, i + 1, j);dfs(board, i - 1, j);dfs(board, i, j + 1);dfs(board, i, j - 1);}}
}
http://www.lryc.cn/news/115024.html

相关文章:

  • python中2等于2.0吗,python中【1:2】
  • 【2023年11月第四版教材】《第2章-信息技术发展(第一部分)》
  • 【CSS】说说对BFC的理解
  • ES6学习-Class类
  • C语言经典小游戏之扫雷(超详解释+源码)
  • 算法leetcode|67. 二进制求和(rust重拳出击)
  • 【ASP.NET MVC】第一个登录页面(8)
  • 使用Openoffice或LibreOffice实现World、Excel、PPTX在线预览
  • 20天学会rust(三)没有object的rust怎么面向对象?
  • 整数规划——第三章 全单模矩阵
  • 数据结构和算法
  • [Vulnhub] matrix-breakout-2-morpheus
  • JDK, JRE和JVM之间的区别和联系
  • mac电脑访问windows共享文件夹连接不上(设置445端口)
  • metersphere性能压测执行过程
  • 揭秘Word高级技巧:事半功倍的文字处理策略
  • 06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框
  • 模拟实现消息队列项目(系列7) -- 实现BrokerServer
  • vscode插件不能搜索安装
  • 路由器工作原理(第二十九课)
  • linux log 日志
  • uniapp获取当前页面高度
  • Java课题笔记~ Spring 集成 MyBatis
  • 分布式系统理论基础
  • mfc 编辑框限制
  • web基础与tomcat环境部署
  • Go 变量
  • 【雷达通信】非相干多视处理(CSA)(Matlab代码实现)
  • 73. 矩阵置零
  • ‘大数据技术与应用’和‘数据科学与大数据技术’有什么区别