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.pswp.cn/news/394066.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394066.shtml
英文地址,請注明出處:http://en.pswp.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…