leetcode1162. 地圖分析(bfs)

你現在手里有一份大小為 N x N 的「地圖」(網格) grid,上面的每個「區域」(單元格)都用 0 和 1 標記好了。其中 0 代表海洋,1 代表陸地,請你找出一個海洋區域,這個海洋區域到離它最近的陸地區域的距離是最大的。

我們這里說的距離是「曼哈頓距離」( Manhattan Distance):(x0, y0) 和 (x1, y1) 這兩個區域之間的距離是 |x0 - x1| + |y0 - y1| 。

如果我們的地圖上只有陸地或者海洋,請返回 -1。
輸入:[[1,0,1],[0,0,0],[1,0,1]]
輸出:2
解釋:
海洋區域 (1, 1) 和所有陸地區域之間的距離都達到最大,最大距離為 2。

代碼

class Solution {public int maxDistance(int[][] grid) {Queue<int[]> queue=new LinkedList<>();int[][] dir=new int[][]{{-1,0},{1,0},{0,1},{0,-1}};for(int i=0;i<grid.length;i++)for(int j=0;j<grid[0].length;j++)if(grid[i][j]==1){queue.offer(new int[]{i,j});}    if(queue.size()==0||queue.size()==grid[0].length*grid.length) return -1;//全為陸地或海洋int res=0;while (!queue.isEmpty())//bfs{int size=queue.size();for(int i=0;i<size;i++)//按層擴散進去{int[] e=queue.poll();int ex=e[0],ey=e[1];for(int[] d:dir){int nextX=ex+d[0],nextY=ey+d[1];if(nextX<0||nextX>=grid.length||nextY<0||nextY>=grid[0].length||grid[nextX][nextY]==1)continue;grid[nextX][nextY]=1;//訪問過的標記為陸地queue.offer(new int[]{nextX,nextY});}}res++;//記錄需要擴散的層數}return res-1;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394048.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394048.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394048.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

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…

Python3 Flask+nginx+Gunicorn部署(上)

前言&#xff1a;一般在本地運行flask項目通常是直接python3 文件名.py&#xff0c;然后打開&#xff1a;http://127.0.0.1:5000 查看代碼結果 這次主要是記錄flask在python3 環境結合nginx gunicorn在服務器上進行項目的部署 &#xff08;一&#xff09;運行環境&#xff1a;虛…

NOIP2011 鋪地毯

題目描述 為了準備一個獨特的頒獎典禮&#xff0c;組織者在會場的一片矩形區域&#xff08;可看做是平面直角坐標系的第一象限&#xff09;鋪上一些矩形地毯&#xff0c;一共有n張地毯&#xff0c;編號從 1 到n。現在將這些地毯按照編號從小到大的順序平行于坐標軸先后鋪設&…

java lock可重入_Java源碼解析之可重入鎖ReentrantLock

本文基于jdk1.8進行分析。ReentrantLock是一個可重入鎖&#xff0c;在ConcurrentHashMap中使用了ReentrantLock。首先看一下源碼中對ReentrantLock的介紹。如下圖。ReentrantLock是一個可重入的排他鎖&#xff0c;它和synchronized的方法和代碼有著相同的行為和語義&#xff0c…

matlab的qammod函數_基于-MATLAB下的16QAM仿真.doc

1.課程設計目的隨著現代通信技術的發展&#xff0c;特別是移動通信技術高速發展&#xff0c;頻帶利用率問題越來越被人們關注。在頻譜資源非常有限的今天&#xff0c;傳統通信系統的容量已經不能滿足當前用戶的要求。正交幅度調制QAM(Quadrature Amplitude Modulation)以其高頻…

POJ3264 【RMQ基礎題—ST-線段樹】

ST算法Code&#xff1a; //#include<bits/stdc.h> #include<cstdio> #include<math.h> #include<iostream> #include<queue> #include<algorithm> #include<string.h> using namespace std; typedef long long LL;const int N5e410;…

leetcode199. 二叉樹的右視圖(bfs)

給定一棵二叉樹&#xff0c;想象自己站在它的右側&#xff0c;按照從頂部到底部的順序&#xff0c;返回從右側所能看到的節點值。示例:輸入: [1,2,3,null,5,null,4] 輸出: [1, 3, 4] 解釋:1 <---/ \ 2 3 <---\ \5 4 <---解題思…

開發人員工作周報_如何增加找到開發人員工作的機會

開發人員工作周報In a recent job as a senior developer, I helped interview and hire many of my employer’s development team members. This is a brain dump of my advice based on those interviews.在最近擔任高級開發人員的工作中&#xff0c;我幫助面試和雇用了許多…

安全專家教你如何利用Uber系統漏洞無限制的免費乘坐?

本文講的是安全專家教你如何利用Uber系統漏洞無限制的免費乘坐&#xff1f;&#xff0c;近日&#xff0c;根據外媒報道&#xff0c;美國一名安全研究人員發現Uber上存在一處安全漏洞&#xff0c;允許發現這一漏洞的任何用戶在全球范圍內免費享受Uber乘車服務。據悉&#xff0c;…

flume介紹

flume 1.flume是什么 Flume:** Flume是Cloudera提供的一個高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、傳輸、聚合的系統。** Flume僅僅運行在linux環境下** flume.apache.org(Documentation--Flume User Guide) Flume體系結構(Architecture)&#xff1a; …

threadx 信號量 應用_操作系統及ThreadX簡介.ppt

操作系統及ThreadX簡介操作系統及ThreadX簡介 軟件二部 2006.09 主要內容 多任務操作系統概述 ThreadX簡介 關于驅動的交流 操作系統概述 什么是操作系統 管理計算機的所有資源&#xff0c;并為應用程序提供服務的最重要的系統軟件 操作系統的目的 為用戶編程提供簡單的接口&am…

java中同步組件_Java并發編程(自定義同步組件)

并發包結構圖&#xff1a;編寫一個自定義同步組件來加深對同步器的理解業務要求&#xff1a;* 編寫一個自定義同步組件來加深對同步器的理解。* 設計一個同步工具&#xff1a;該工具在同一時刻&#xff0c;只允許至多兩個線程同時訪問&#xff0c;超過兩個線程的* 訪問將被阻塞…

maven學習資料

maven學習資料maven學習教程&#xff1a;What、How、Whyhttp://www.flyne.org/article/167Maven 那點事兒 https://my.oschina.net/huangyong/blog/194583項目管理工具&#xff1a;Maven教程http://www.flyne.org/article/884轉載于:https://www.cnblogs.com/zhao1949/p/634641…

leetcode127. 單詞接龍(bfs)

給定兩個單詞&#xff08;beginWord 和 endWord&#xff09;和一個字典&#xff0c;找到從 beginWord 到 endWord 的最短轉換序列的長度。轉換需遵循如下規則&#xff1a; 每次轉換只能改變一個字母。 轉換過程中的中間單詞必須是字典中的單詞。 說明: 如果不存在這樣的轉換序…

算法之旅 | 快速排序法

HTML5學堂-碼匠&#xff1a;前幾期“算法之旅”跟大家分享了冒泡排序法和選擇排序法&#xff0c;它們都屬于時間復雜度為O(n^2)的“慢”排序。今天跟大家分享多種排序算法里使用較廣泛&#xff0c;速度快的排序算法—— 快速排序法 [ 平均時間復雜度為O (n logn) ]。Tips 1&…

springmvd接收參數問題

問題描述&#xff1a; 好久不寫博客了&#xff0c;今天遇到一個問題&#xff0c;那就是post請求時&#xff0c;參數接收不到&#xff0c;當時我很納悶&#xff0c;看代碼&#xff1a; 就是這樣幾個參數&#xff0c;我使用postman請求時無法獲取參數&#xff1a; 報錯信息&#…

figma下載_如何在Figma中創建逼真的3D對象

figma下載by Gbolahan Taoheed Fawale通過Gbolahan Taoheed Fawale 如何在Figma中創建逼真的3D對象 (How to create realistic 3D objects in Figma) Prior to using Figma, I used Adobe Illustrator for most of my designs (like logos, mockups, illustrations, and so on…

OpenGL中的二維編程——從簡單的矩形開始

一、OpenGL的組成 圖元函數&#xff08;primitive function&#xff09;指定要生成屏幕圖像的圖元。包括兩種類型&#xff1a;可以在二維、三維或者四維空間進行定義的幾何圖元&#xff0c;如多邊形&#xff1b;離散實體&#xff1b;位圖。屬性函數&#xff08;attribute funct…

圓與平面的接觸面積_如果一個絕對的圓放在絕對的平面上,接觸面是不是無限小?...

這種問題其實并不難解答&#xff1a;如果你真的能找到一個絕對的圓還有一個絕對平的平面上&#xff0c;并且保證放上去之后圓和平面不會有任何變化&#xff0c;那么接觸面就可以是無限小&#xff01;如果不能&#xff0c;很抱歉&#xff0c;接觸面很顯然就不會是無限小&#xf…