本题解答错误----暂做记录----130. 被围绕的区域

130. 被围绕的区域

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
    • _130被围绕的区域_dfs
    • _130被围绕的区域_bfs_01
  • 错误经验吸取

原题链接:

添加链接描述130. 被围绕的区域

https://leetcode.cn/problems/surrounded-regions/description/

完成情况:

在这里插入图片描述

在这里插入图片描述

解题思路:

这段代码实现了一个深度优先遍历算法,用于解决一个矩阵问题。下面是对代码的清晰、简洁和可读性强的解释:

  • 首先定义了一个二维数组position,包含四个方向的偏移量,分别为上、右、下、左。
  • dfs 方法用于深度优先遍历矩阵,从指定的位置(row, col)开始向四个方向进行搜索。
  • solve 方法用于解决矩阵问题,首先从左右两侧开始遍历,标记连通的区域为特殊值’A’,并调用dfs方法进行深度优先搜索。
  • 然后从上下两边开始遍历,同样标记连通的区域为特殊值’A’,不需要遍历四个角。
  • 最后遍历整个矩阵,将未被标记的’O’修改为’X’,将特殊值’A’修改回’O’。

这段代码的主要目的是将矩阵中被包围的区域中的’O’修改为’X’,被包围的条件是指该区域中的’O’必须与边界相连。

参考代码:

_130被围绕的区域_dfs

package 代码随想录.图论;public class _130被围绕的区域_dfs {int position[][] = {{1,0},{-1,0},{0,1},{0,-1}};/**** @param board*/public void solve(char[][] board) {int row = board.length,column = board[0].length;boolean[][] visited = new boolean[row][column];//一样的,先遍历掉外围for (int r = 0; r < row; r++) {if (board[r][0] == 'O' && !visited[r][0]){visited[r][0] = true;dfs_solve(board,row,0,visited);}if (board[r][column-1] == 'O' && !visited[r][column-1]){visited[r][column-1] = true;dfs_solve(board,r,column-1,visited);}}for (int c = 1;c < column-1;c++){if (board[0][c] == 'O' && !visited[0][c]){visited[0][c] = true;dfs_solve(board,0,c,visited);}if (board[row-1][c] == 'O' && !visited[row-1][c]){visited[row-1][c] = true;dfs_solve(board,row-1,c,visited);}}//将剩下部分全部判断并修改for (int r = 0;r<row;r++){for (int c = 0;c<column;c++){if (board[r][c] == 'O' && !visited[r][c])   board[r][c] = 'X';}}}private void dfs_solve(char[][] board, int row, int column, boolean[][] visited) {for (int [] pos : position){int nextRow = row + pos[0],nextCol = column + pos[1];//位置越界if (nextRow < 0 || nextRow >= board.length || nextCol < 0 || nextCol >= board[0].length)    continue;if (visited[nextRow][nextCol] || board[nextRow][nextCol] != 'O')    continue;visited[nextRow][nextCol] = true;dfs_solve(board,nextRow,nextCol,visited);}}}

_130被围绕的区域_bfs_01

package 代码随想录.图论;import java.util.ArrayDeque;
import java.util.Deque;public class `_130被围绕的区域_bfs_01` {int position[][] = {{1,0},{-1,0},{0,1},{0,-1}};/**A* 将所有与边界无关的‘0’全部替换成‘X’即可。* @param board*/public void solve(char[][] board) {int row = board.length,column = board[0].length;boolean[][] visited = new boolean[row][column];Deque<int []> myQueue = new ArrayDeque<int[]>();//先遍历外围边for (int r = 0;r < row;r++) {if (board[r][0] == 'O'){visited[r][0] = true;myQueue.add(new int[]{r,0});}if (board[r][column - 1] == 'O'){visited[r][column - 1] = true;myQueue.add(new int[]{r,column-1});}}//此处存在重复检查,不过影响不大的话,无所谓╮(╯_╰)╭for (int c = 1;c < column - 1;c++){if (board[0][c] == 'O'){visited[0][c] = true;myQueue.add(new int[]{0,c});}if (board[row-1][c] == 'O'){visited[row-1][c] = true;myQueue.add(new int[]{row-1,c});}}//然后对队列里面的元素进行四个角的循环找‘1’即可。while (!myQueue.isEmpty()){int curQueue [] = myQueue.poll();for (int pos [] : position){int r = curQueue[0] + pos[0],c = curQueue[1] + pos[1];//防止越界if (r < 0 || r >= row || c < 0 || c >= column)  continue;if (visited[r][c] || board[r][c] != '0')    continue;visited[r][c] = true;myQueue.add(new int[]{r,c});}}//最后遍历数组,把所有剩下的未访问到的’O‘改成’X‘for (int r = 0;r <row;r++){for (int c = 0;c < column;c++){if (board[r][c] == 'O' && !visited[r][c]){board[r][c] = 'X';}}}}
}

错误经验吸取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaSE:抽象类和接口

目录 一、前言 二、抽象类 &#xff08;一&#xff09;抽象类概念 &#xff08;二&#xff09;使用抽象类的注意事项 &#xff08;三&#xff09;抽象类的作用 三、接口 &#xff08;一&#xff09;接口概念 &#xff08;二&#xff09;接口语法规则 &#xff08;三&a…

视频创作者必备应用!三步帮你解决前置内容条件,打造专属大片!

你还没尝试过AI视频生成&#xff1f;AI技术逐渐浸透我们的生活&#xff0c;太多的事物变得有了捷径可走。AI视频生成为创作者们提供更加便利快捷的输出形式&#xff0c;更优质更契合的生产内容。尝试AI视频生成系列应用&#xff0c;迎接AI宇宙&#xff01; 生成剧本分镜 视频…

Unity Toggle组件

Toggle Group组件 Allow Switch Off属性值为false时&#xff0c; 1&#xff0c;Toggle初始时默认会有一个被勾选&#xff08;ison为true&#xff09;&#xff0c;可以自己打勾指定 2&#xff0c;不能取消勾选 Allow Switch Off属性值为true时&#xff0c; 1&#xff0c;Toggl…

LabVIEW专栏五、网口

该节目标编写一个网口调试VI。 上一章是串口&#xff0c;这章介绍网口的写法。 一、网口硬件 1.1、上位机网口 1.2、网口线 由线缆和水晶头组成&#xff0c;现在一般用5类和超5类的网线 1.3、接线方式 忽略&#xff0c;这里加上这点为了提醒一个硬件和上位机连接&#xf…

[NSSRound#8 Basic]MyPage

[NSSRound#8 Basic]MyPage 打开页面后什么都没有 尝试使用php伪协议 //读取文件源码 filephp://filter/readconvert.base64-encode/resourceindex.php 显示&#xff1a;空白一片 filephp://filter/readconvert.base64-encode/resource/var/www/html/index.php 显示&#xff1…

推箱子_java源码_50张地图_带背景音乐

一. 演示视频 推箱子_java源码_50张地图_带背景音乐 二. 实现步骤 完整项目获取 https://githubs.xyz/y23.html 部分截图 map地图实现 00000000000000000000 00000000000000000000 00000000000000000000 00000000000000000000 00000000000000000000 00000000000000000000 00…

SpringSecurity2

AuthenticationManagerBuilder 继承了之前提到的AbstractConfiguredSecurityBuilder构造器 postProcess安全对象的后处理&#xff0c;那么ProviderManager是什么 ProviderManager Authentication public interface Authentication extends Principal, Serializable {/**** …

学习笔记】java项目—苍穹外卖day05

文章目录 苍穹外卖-day05课程内容1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常用数据类型介绍…

Spring 源码调试错误修复

Spring 源码调试错误修复 文章目录 Spring 源码调试错误修复1. fatal: not a git repository (or any of the parent directories): .git问题描述解决方案 2. fatal: Needed a single revision问题描述解决方案 1. fatal: not a git repository (or any of the parent director…

Docker之ruoyi-vue项目部署

文章目录 创建自定义网络安装redis安装mysql发布若依项目--后端使用Dockerfile自定义镜像运行容器 nginx 创建自定义网络 #搭建net-ry局域网&#xff0c;用于部署若依项目 docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1 注意1&#xff1a;关闭宿主…

gateway应用(1)

1 简介 简单理解---业务服务的统一入口&#xff0c;方便实现&#xff0c;服务路由&#xff0c;安全&#xff0c;限流&#xff0c;过滤&#xff0c;黑白名单&#xff0c;证书加密解密&#xff0c;服务降级/熔断&#xff0c;灰度&#xff0c;等等 2 介绍 Predicate&#xff08…

荣誉 | 人大金仓连续三年入选“金融信创优秀解决方案”

3月28日&#xff0c;由中国人民银行领导&#xff0c;中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布“第三期金融信创优秀解决方案”&#xff0c;人大金仓新一代手机银行系统解决方案成功入选&#xff0c;这也是人大金仓金融行业解决方案连续第三年获得用户认可。…

LabVIEW齿轮箱噪声监测系统

LabVIEW齿轮箱噪声监测系统 齿轮箱作为机械设备的“心脏”&#xff0c;其健康状态对设备的性能有着重要的影响。传统的齿轮箱监测方法依赖于直接的振动信号分析&#xff0c;但这种方法不仅成本高昂&#xff0c;而且在安装和拆卸过程中可能对设备造成损害。针对这些问题&#x…

filetype: python中判断图像格式库imghdr替代库

引言 imghdr库是python中的一个内置库&#xff0c;用来判断图像原本格式的。自己一直有在用&#xff0c;不过近来看到这个库在python 3.13中会被移除。 自己感觉一直被python版本赶着走。这不找了好久&#xff0c;才找到一个替代库–filetype Python各个版本将要移除和可替代…

Kubernetes控制器(四)______StatefulSet

控制器介绍 StatefulSet&#xff1a; 是Kubernetes中用于管理有状态应用的控制器。与Deployment不同&#xff0c;StatefulSet用于部署和管理需要持久标识、有序部署和唯一网络标识的 Pod。典型的用例包括数据库、缓存和队列等有状态应用。&#xff08;有状态服务&#xff1a;单…

分享几个好用的电商API接口(可测试)

以下是一些好用的电商API接口&#xff0c;这些接口都可以用于获取电商平台的商品、订单、物流等相关信息&#xff0c;并提供了测试功能以确保接口的稳定性和可用性&#xff1a; 请求示例&#xff0c;API接口接入Anzexi58 淘宝开放平台API&#xff1a;淘宝开放平台提供了丰富的…

Keil 警告解决 : warning: #870-D: invalid multibyte character sequence

说明&#xff1a;在Keil项目编译时出现了几个 warning: #870-D: 的警告&#xff0c;接下来分析解决这个警告。 注意&#xff1a;在尝试解决问题前一定要将整个工程打包成压缩文件备份&#xff0c;以防更改失败变文件成乱码。 1.警告内容 warning: #870-D: warning: #870-…

Android Monkey自动化测试

monkey一般用于压力测试&#xff0c;用户模拟用户事件 monkey 基本用法 adb shell monkey [参数] [随机事件数]monkey常用命令 -v&#xff1a;用于指定反馈信息级别&#xff0c;总共分三个等级-v -v -vadb shell mokey -v -v -v 100-s&#xff1a;用于指定伪随机数生成器的种…

CentOS7安装flink1.17完全分布式

前提条件 准备三台CenOS7机器&#xff0c;主机名称&#xff0c;例如&#xff1a;node2&#xff0c;node3&#xff0c;node4 三台机器安装好jdk8&#xff0c;通常情况下&#xff0c;flink需要结合hadoop处理大数据问题&#xff0c;建议先安装hadoop&#xff0c;可参考 hadoop安…

impnt只读,燕用,必填,提示词(占位符)属性分别是什么

readonly 属性规定输入字段为只读&#xff08;不能修改&#xff09; <input type"text" placeholder"点我啊" readonly/> disabled 属性规定输入字段是禁用的 <input type"text" placeholder"点我啊" disabled/> re…