leetcode934. 最短的桥(dfs+bfs)

在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)

现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。

返回必须翻转的 0 的最小数目。(可以保证答案至少是 1。)

示例 1:

输入:[[0,1],[1,0]]
输出:1

代码

class Solution {public void  helper(int[][] A,int[][] dir) {//dfs找出第一座岛,标为2for(int i=0;i<A.length;i++)for(int j=0;j<A[0].length;j++)if(A[i][j]==1){dfs(A,dir,i,j);return;}}Queue<int[]> queue=new LinkedList<>();public int shortestBridge(int[][] A) {int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1}};int n=A.length,m=A[0].length;helper(A,dir);while (!queue.isEmpty())//bfs{int[] e=queue.poll();int ex=e[0],ey=e[1],el=e[2];for(int[] d:dir)//向4个方向蔓延{int nextX=ex+d[0],nextY=ey+d[1];if(nextX<0||nextX>=A.length||nextY<0||nextY>=A[0].length||A[nextX][nextY]==2)continue;//不能走的点if(A[nextX][nextY]==1) return el;queue.offer(new int[]{nextX,nextY,el+1});A[nextX][nextY]=2;//标记为第一座岛屿,避免重复访问}}return -1;}public void dfs(int[][] A,int[][] dir,int x,int y) {A[x][y]=2;queue.offer(new int[]{x,y,0});for(int[] d:dir){int nextX=x+d[0],nextY=y+d[1];if(nextX<0||nextX>=A.length||nextY<0||nextY>=A[0].length||A[nextX][nextY]!=1)continue;dfs(A, dir, nextX, nextY);}}
}

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

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

相关文章

谢烟客---------Linux之DNS服务系统的基础知识

DNS Domain Name Server1)C/S架构&#xff1a;SOCKET通信IP PORT2&#xff09;应用层协议&#xff1a;资源子网BIND Berkerley Information Name DomainDNS由来1&#xff09;统一名字&#xff0c;自己维护 <自己查询>解析: 基于key查找value: 查询数据库(二维关系的表: …

Java实现点击导出excel页面遮罩屏蔽,下载完成后解除遮罩

一、问题场景 最近在做数据统计功能&#xff0c;需求是导出大数据量的excel&#xff0c;时间间隔较长&#xff0c;大概需要十秒左右&#xff0c;点击导出后&#xff0c;页面没有做任何处理&#xff0c;用户也不知道是否正在导出&#xff1b;如果没有做交互上的限制&#xff0c;…

pbs 支持 java_Linux下Java安装与配置

安装以JDK1.6.0_43为例下载jdk-6u43-linux-x64.bin&#xff0c;http://www.oracle.com/technetwork/java/javase/downloads/index.html增加可执行权限 chmod x jdk-6u43-linux-x64.bin&#xff0c;执行 ./jdk-6u43-linux-x64.bin 生成目录jdk1.6.0_43拷贝到/usr/share下&#x…

使用Chatkit构建Node.js命令行聊天应用程序

by Hugo雨果 使用Chatkit构建Node.js命令行聊天应用程序 (Build a Node.js command-line chat application with Chatkit) Building chat in your app can be pretty complex. Yet, with Chatkit, implementing fully-featured chat is nothing but a few lines of code.在您的…

java 毫秒转分钟和秒_Java程序将毫秒转换为分钟和秒

Java程序将毫秒转换为分钟和秒在上面的程序中&#xff0c;您将学习如何在Java中将毫秒分别转换为分钟和秒。示例1&#xff1a;将毫秒分别转换为分钟和秒import java.util.concurrent.TimeUnit;public class Milliseconds {public static void main(String[] args) {long millis…

Andrew Ng机器学习之一 导论

监督学习与无监督学习 监督学习&#xff08;Supervised Learning) Ng的原文是&#xff1a; We gave the algorithm a data set that the "right answers" were given. 即给定了一个正确结果的集合供算法学习&#xff0c;强调了需要实现准备好正负样本喂给机器。 无监…

leetcode994. 腐烂的橘子(bfs)

在给定的网格中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;任何与腐烂的橘子&#xff08;在 4 个正方向上&#xff09;相邻的新鲜橘子都会腐烂。 返回直…

ES6对象的扩展

1.属性简写表示 2.方法简写表示 属性与方法简写&#xff1a; 3.属性名表达式 ES6允许字面量定义对象时&#xff0c;用方法二&#xff08;表达式&#xff09;作为对象的属性名&#xff0c;即把表达式放在方括号内。 4.Object.is()比较两个值是否严格相等 转载于:https://www.cnb…

Spring Cloud项目MVN编译 -- Non-resolvable import POM

最近利用闲余时间&#xff0c;打算搭建一套基于Spring Cloud G版的微服务架构(Spring boot 2.1.0)&#xff0c;一顿操作之后,IDEA也没有提示什么错误,自认为微服务搭建完毕。启动项目前&#xff0c;习惯性的Maven -clean了一下&#xff0c;我去&#xff0c;IDEA里面的Maven Pro…

datax底层原理_Datax 插件加载原理

Datax 插件加载原理插件类型Datax有好几种类型的插件&#xff0c;每个插件都有不同的作用。reader&#xff0c; 读插件。Reader就是属于这种类型的writer&#xff0c; 写插件。Writer就是属于这种类型的transformer&#xff0c; 目前还未知handler&#xff0c; 主要用于任务执行…

mysql windows身份验证_SQL Server 2005 怎么就不能用Windows身份验证方式登录呢?

SQL Server 2005 自从装到我的电脑上始终无法使用Windows身份验证的方式登录,由于使用用户名和密码登录还算顺畅,所以一直忽略了这SQL Server 2005 自从装到我的电脑上始终无法使用Windows身份验证的方式登录,由于使用用户名和密码登录还算顺畅,所以一直忽略了这个问题,直到又有…

JavaScript正则表达式快速简单的指南

Interested in learning JavaScript? Get my ebook at jshandbook.com有兴趣学习JavaScript吗&#xff1f; 在jshandbook.com上获取我的电子书 正则表达式简介 (Introduction to Regular Expressions) A regular expression (also called regex for short) is a fast way to w…

leetcode104. 二叉树的最大深度(dfs)

给定一个二叉树&#xff0c;找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c;3/ \9 20/ \15 7 返回它的最大深度 3 。代码 class Soluti…

[解读REST] 3.基于网络应用的架构

链接上文[解读REST] 2.REST用来干什么的&#xff1f;&#xff0c;上文中解释到什么是架构风格和应该以怎样的视角来理解REST&#xff08;Web的架构风格&#xff09;。本篇来介绍一组自洽的术语&#xff0c;用它来描述和解释软件架构&#xff1b;以及列举下对于基于网络的应用来…

js判断对象还是数组

1.对于Javascript 1.8.5&#xff08;ECMAScript 5&#xff09;&#xff0c;变量名字.isArray( )可以实现这个目的 var a[]; var b{}; Array.isArray(a);//true Array.isArray(b)//false 2.如果你只是用typeof来检查该变量&#xff0c;不论是array还是object&#xff0c;都将返回…

mysql 除去列名打印_sql – 使用beeline时避免在列名中打印表名

在beeline中使用hive时使用简单的select查询我想在列名中返回没有表名的表作为默认值.例数据CREATE TABLE IF NOT EXISTS employee ( eid int, name String,salary String, destination String)COMMENT Employee detailsROW FORMAT DELIMITEDFIELDS TERMINATED BY \tLINES TERM…

移动应用程序和网页应用程序_如何开发感觉像本机移动应用程序的渐进式Web应用程序...

移动应用程序和网页应用程序by Samuele Dassatti通过萨穆尔达萨蒂 如何开发感觉像本机移动应用程序的渐进式Web应用程序 (How you can develop Progressive Web Apps that feel like native mobile apps) I’m currently developing a Progressive Web App that will also ser…

leetcode1162. 地图分析(bfs)

你现在手里有一份大小为 N x N 的「地图」&#xff08;网格&#xff09; grid&#xff0c;上面的每个「区域」&#xff08;单元格&#xff09;都用 0 和 1 标记好了。其中 0 代表海洋&#xff0c;1 代表陆地&#xff0c;请你找出一个海洋区域&#xff0c;这个海洋区域到离它最近…

mysql修改root密码的方法

在 Navicat for MySQL 下面直接执行 SET PASSWORD FOR rootlocalhost PASSWORD(newpass); 就可以 方法1&#xff1a; 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR rootlocalhost PASSWORD(newpass); 方法2&#xff1a;用mysqladmin mysqladmin -u root …

android 上下偏差怎么写_详解 Android 热更新升级如何突破底层结构差异?

知道了 native 替换方式兼容性问题的原因&#xff0c;我们是否有办法寻求一种新的方式&#xff0c;不依赖于 ROM 底层方法结构的实现而达到替换效果呢&#xff1f;我们发现&#xff0c;这样 native 层面替换思路&#xff0c;其实就是替换 ArtMethod 的所有成员。那么&#xff0…