leetcode130. 被围绕的区域(bfs)

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

代码

class Solution {public void solve(char[][] board) {if(board.length==0) return;int n=board.length,m=board[0].length;int[][] dir=new int[][]{{0,1},{1,0},{-1,0},{0,-1}};boolean[][] check=new boolean[n][m];Queue<int[]> queue=new LinkedList<>();for(int i=0;i<m;i++)//将边界的O入队{if(board[0][i]=='O') {queue.add(new int[]{0,i});check[0][i]=true;}if(board[n-1][i]=='O') {queue.add(new int[]{n-1,i});check[n-1][i]=true; }}for(int i=1;i<n-1;i++){if(board[i][0]=='O') {queue.add(new int[]{i,0});check[i][0]=true;}if(board[i][m-1]=='O'){queue.add(new int[]{i,m-1});check[i][m-1]=true;}}while (!queue.isEmpty())//bfs将与边界O连接的点找出来标记{int[] temp=queue.poll();for (int[] d:dir){int x=temp[0]+d[0],y=temp[1]+d[1];if(x<0||x>=n||y<0||y>=m||board[x][y]=='X'||check[x][y]) continue;queue.offer(new int[]{x,y});check[x][y]=true;}}for(int i=0;i<n;i++)//除了与边界O连接的点,全部置为xfor(int j=0;j<m;j++)board[i][j]=check[i][j]?'O':'X';}
}

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

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

相关文章

linux mysql提交_MySQL 事务提交过程

开发老大要求通过binlog查询一条被修改的数据&#xff0c;数据被查出后问我&#xff0c;有没有可能binlog中不会记录&#xff0c;回答不会&#xff0c;因为数据被修改&#xff0c;若失败直接回滚&#xff0c;不会在binlog中记录&#xff0c;此刻一个朋友用了洪荒之力告诉我&…

spray.json_如何使用Spray-json(Un)在Akka HTTP中封送JSON

spray.jsonby Miguel Lopez由Miguel Lopez 如何使用Spray-json(Un)在Akka HTTP中封送JSON (How to (Un)marshal JSON in Akka HTTP with spray-json) In the previous post, we added JSON support to our Akka HTTP API using circe.在上一篇文章中 &#xff0c;我们使用circ…

React单元测试:Jest + Enzyme(二)

前言 在上一篇教程中&#xff0c;我们成功搭建了基于Jest和Enzyme的单元测试框架并成功地跑起来第一个单元测试&#xff0c;可以点击这里回顾一下。今天&#xff0c;我们重点讨论如何通过Jest来mock数据。 什么是Mock Mock的简单翻译就是模拟。既可以模拟数据&#xff0c;也可以…

input file 文件上传,js控制上传文件的大小和格式

文件上传一般是用jquery的uploadify&#xff0c;比较好用。后面会出文章介绍uploadify这个插件。 但是&#xff0c;有时候为了偷懒&#xff0c;直接就用input 的file进行文件和图片等的上传&#xff0c;input file 可以控制上传的格式&#xff0c;但是是html5&#xff0c;很多浏…

leetcode面试题 17.08. 马戏团人塔(二分法)

有个马戏团正在设计叠罗汉的表演节目&#xff0c;一个人要站在另一人的肩膀上。出于实际和美观的考虑&#xff0c;在上面的人要比下面的人矮一点且轻一点。已知马戏团每个人的身高和体重&#xff0c;请编写代码计算叠罗汉最多能叠几个人。 示例&#xff1a; 输入&#xff1a;…

如何选择适合自己的CMS建站系统

如今做网站已不像过去那样必须找网站公司才能建&#xff0c;因为网上针对建站的各种CMS建站系统层出不穷。像PageAdmin、DEDECMS、帝国CMS、Discuz等&#xff0c;这些CMS系统各有各的特点和优势&#xff0c;小熊优化的小编我从事网站制作和网站优化多年&#xff0c;和很多建站朋…

python dict hash算法_2020年3月26日python学习笔记——hash

什么是哈希&#xff1f;hash,一般翻译做散列、杂凑&#xff0c;或音译为哈希&#xff0c;是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出&#xff0c;该输出就是散列值。这种转换是一种压缩映射&#xff0c;也就是&#xff0c;散列值的空间通常远…

数据处理不等式:Data Processing Inequality

我是在差分隐私下看到的&#xff0c;新解决方案的可用性肯定小于原有解决方案的可用性&#xff0c;也就是说信息的后续处理只会降低所拥有的信息量。 那么如果这么说的话为什么还要做特征工程呢&#xff0c;这是因为该不等式有一个巨大的前提就是数据处理方法无比的强大&#x…

aws架构_如何使用AWS构建可扩展架构

aws架构What I learned building the StateOfVeganism ?我学到的建立素食主义的方法是什么&#xff1f; By now, we all know that news and media shape our views on the topics we discuss. Of course, this is different from person to person. Some might be influence…

gulp 实现sass自动化 ,监听同步

实现功能 监听scss文件   sass自动化 准备条件 1 .安装gulp npm init ---->一直enter&#xff0c;会在当前目录下生成一个package.json文件,记录安装的依赖模块 npm install gulp --save-dev 2 .安装gulp-ruby-sass npm install gulp-ruby-sass 你还需要安装ruby环境…

leetcode面试题 10.03. 搜索旋转数组(二分法)

搜索旋转数组。给定一个排序后的数组&#xff0c;包含n个整数&#xff0c;但这个数组已被旋转过很多次了&#xff0c;次数不详。请编写代码找出数组中的某个元素&#xff0c;假设数组元素原先是按升序排列的。若有多个相同元素&#xff0c;返回索引值最小的一个。 示例1: 输入…

MSSQL → 02:数据库结构

一、数据库的组成 在SQL Server 2008中&#xff0c;用户如何访问及使用数据库&#xff0c;就需要正确了解数据库中所有对象及其设置。数据库就像一个容器&#xff0c;它里面除了存放着数据的表之外&#xff0c;还有视图、存储过程、触发器、约束等数据库对象。数据库管理的核心…

JAVA拳皇_拳皇(Java简单的小程序)代码实例|chu

刚开始学习Java&#xff0c;看完老九君的视频根据他的内容敲的代码&#xff0c;感觉还挺有成就感的&#xff0c;毕竟刚学习Java。package helloasd;import java.util.*; public class hellojava { public static void main(String[] args) { Scanner input new Scanner(System…

mySQL教程 第9章 触发器

第9章 触发器 入的新数据放到new表&#xff0c;删除的数据放到old表。 准备本章学习环境 连接数据库schoolDB&#xff0c;删除表TStudent&#xff0c;TScore和Tsubject中的所有数据。 delete from TStudent; delete from TScore; delete from TSubject; 向学生表插入两条记录 i…

vue使用python_如何使用Python和Vue创建两人游戏

vue使用pythonby Neo Ighodaro由新Ighodaro 如何使用Python和Vue创建两人游戏 (How to create a two-player game with Python and Vue) In this tutorial, we will create a realtime tic-tac-toe game using Python and Pusher channels. Here’s a demo of how the game wi…

掩码图制作photoshop__新手用

1.首先你得有一张图&#xff0c;比如这样的&#xff1a; 2.用PS打开他 3.左边工具栏里&#xff08;快速选择工具W&#xff09;&#xff0c;选想显示的部分 4.ctrlc复制一下&#xff0c;新建一张黑底图粘贴上去或者白底图时选中显示区即花瓣右键反向右键填充成黑色 5.菜单栏->…

leetcode287. 寻找重复数(二分法)

给定一个包含 n 1 个整数的数组 nums&#xff0c;其数字都在 1 到 n 之间&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整数&#xff0c;找出这个重复的数。 示例 1: 输入: [1,3,4,2,2] 输出: 2 代码 class Solution {…

os-enviroment

pip3 install PyUserInput ping 是不带协议的转载于:https://www.cnblogs.com/liuweimingcprogram/p/10957592.html

java 压缩 乱码_如何解决java压缩文件乱码问题

用java来打包文件生成压缩文件&#xff0c;有两个地方会出现乱码&#xff1a;内容的中文乱码问题&#xff1a;修改sun的源码。使用开源的类库org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry&#xff0c;这两个类ant.jar中有&#xff0c;可以下载使用即可…

Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现

大体思路 前面我们实现了点击开始游戏按钮&#xff0c;系统依次给玩家发牌的逻辑和动画&#xff0c;并展示当前的手牌。这期我们继续实现接下来的功能--叫地主。 1.首先这两天&#xff0c;学习了DOTween&#xff0c;这是一个强大的Unity动画插件&#xff0c;大家可以参考&#…