你现在手里有一份大小为 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;}
}

leetcode1162. 地图分析(bfs)相关推荐

  1. 1162. 地图分析 BFS Dijkstra算法

    你现在手里有一份大小为 N x N 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了.其中 0 代表海洋,1 代表陆地,请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的 ...

  2. Leetcode0542. 01 矩阵(medium,BFS)

    目录 1. 题目描述 2. 解题分析 3. 代码实现 1. 题目描述 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距 ...

  3. Leetcode每日一题总目录(动态更新。。。)

    0. 概要 leecode每日一题(也可能多题)题解跟踪记录及总目录. 常用算法解题思路和技巧及数据结构: 预处理:数组排序(954),哈希表... 双指针法 682,125,905 单向链表 2 双 ...

  4. LeetCode 1162. 地图分析(BFS)

    1. 题目 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了.其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域 ...

  5. leetcode:1162. 地图分析

    题目来源 leetcode:1162. 地图分析 题目描述 题目解析 题目分析 本题要求:求所有海洋点到离它最近的陆地点的距离的最大值. 问题:什么是距离?这里是曼哈顿距离,就是只能沿着横.竖到达另外 ...

  6. 多源BFS 理解学习+代码模板---跟龙之介学算法

    单源BFS是广搜,基于队列的思想,找到初始结点入队,然后把邻接点入队,直到搜索完. 而多源BFS就是,可以多个源点入队,然后每次都将当前入队的所有结点的邻边入队.这次我们核心围绕多源BFS分几种体型来 ...

  7. LeetCode - 1162 地图分析

    题目来源 1162. 地图分析 - 力扣(LeetCode) 题目描述 你现在手里有一份大小为 n x n 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了.其中 0 代表海洋,1  ...

  8. python扫雷 广度优先_基于邻接矩阵的广度优先搜索遍历(BFS)

    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索( ...

  9. LeetCode:1162. 地图分析+模板链接

    题目 LeetCode:1162. 地图分析 你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了.其中 0 代表海洋,1 代表陆地 ...

最新文章

  1. yum安装nginx
  2. Oracle 删除归档日志脚本
  3. python修改静态html_Python 静态页面爬虫---urllib3库实现
  4. @Aspect中@Pointcut 12种用法
  5. MySQL 错误 1366:1366 Incorrect integer value
  6. PHP7 网络编程(四)signal信号【待】
  7. 腾讯竟然是这样存储你的数据的!!!
  8. 自旋锁原理及java自旋锁
  9. 电教室软件 linux,在深度操作系统上安装多媒体电子教室Veyon
  10. mathorcup数据大赛
  11. 微信小程序之轮播图(附带图片)
  12. python:制作水印图片
  13. 【下一步计划】毕业后
  14. 无法安装X64 在计算机找到X32,怎么看电脑适合装32位还是64位
  15. S7-300/400 PLC 模拟量输入/输出的量程转换
  16. 【迅为iMX6Q】开发板:uboot-imx编译
  17. 2022年 新华三杯决赛题目
  18. JavaScript实现圆周运动
  19. 评价股票博客好坏的指标(第11期)
  20. The 37th ACM/ICPC Asia Regional HangZhou Site Online Contest - F

热门文章

  1. 【C++ Primer | 09】容器适配器
  2. WinPcap笔记(2):获取设备列表
  3. 列表生成式,生成器表达式,模块的使用
  4. Asp.net MVC模型数据验证扩展ValidationAttribute
  5. 浏览器兼容CSS渐进增强 VS 优雅降级如何选择
  6. 最感叹的莫过于一见如故,最悲伤的莫过于再见陌路。最深的孤独,是你明知道自己的渴望,却得对它装聋作哑。最美的你不是生如夏花,而是在时间的长河里,波澜不惊。...
  7. java枚举的简单介绍
  8. sp_decrypt
  9. Visual Basic.NET中访问数据的方法(zz)
  10. jenkins的JAVA简单顺序配置git仓库