地图分析--广度搜索
问题来源:地图分析
问题描述:你现在手里有一份大小为 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。
思路:以所有的陆地为中心,做广度搜索,每前进一步记下步数,这样广度搜索结束步数即为最大距离。参考@lucifer的解答。
class Solution:def maxDistance(self, grid: List[List[int]]) -> int:n = len(grid)steps = -1# 挑出所有的陆地queue = [(i, j) for i in range(n) for j in range(n) if grid[i][j] == 1]# 极端情况if len(queue) == 0 or len(queue) == n ** 2: return -1# 广度搜索while queue:for _ in range(len(queue)):x, y = queue.pop(0)for xi, yi in [(x-1, y), (x+1, y), (x, y-1), (x, y+1)]:if xi < n and yi < n and xi > -1 and yi > -1 and grid[xi][yi] == 0:queue.append((xi, yi))grid[xi][yi] = -1steps += 1return steps
地图分析--广度搜索相关推荐
- 二叉树的前序中序后序递归查找,深度,广度搜索C++实现(VS2017)
一.图和运行结果如下 二.代码如下: #include<iostream> #include<string> #include<fstream> #include& ...
- 深度搜索问题c语言,C语言实现的图的深度搜索与广度搜索程序.doc
C语言实现的图的深度搜索与广度搜索程序 C语言实现的图的深度搜索与广度搜索程序 /* 上机试验5-图的建立和遍历 1)建立[无向][非连通]图的邻接表存储结构,要求顶点个数不少于15个. 2)用DFS ...
- 【算法】深度搜索(DFS) 和 广度搜索(BFS)
深度搜索(DFS) 点:然后退回到该顶点,搜索其它路径,直到以该顶点为始点的所有路径的顶点都被访问,深度搜索算法是递归算法,因为对于没一个节点来说,执行的是同样的操作. 简单来说,深度搜素算法就是一 ...
- 深度搜索(DFS)和广度搜索(BFS)
深度搜索(DFS) 一.搜索方法: 沿出发顶点的第一条路径尽量深入,遍历路径上所有顶点:然后退回到该顶点,搜索其它路径,直到以该顶点为始点的所有路径的顶点都被访问,深度搜索算法是递归算法,因为对于没 ...
- 【数据结构】无向图的遍历(广度搜索和深度搜索)
说明 以邻接表作为存储结构 以用户指定的结点分别进行广度搜索和深度搜索 相应的生成树的边集 运行截图 源代码 import java.util.*;public class AdjacencyList ...
- 深度搜索和广度搜索特点的深刻理解
问题提出: 考虑如下图所示的简单图所表示的缅因州的道路系统.在冬天里保持道路通路通畅的唯一方式就是经常扫雪.高速公路部分希望只扫尽可能少的道路上的雪,而确保总是存在连接任何两个乡镇的干净道路.如何才能 ...
- 人、狼、羊、白菜过河问题(广度搜索)
人.狼.羊.白菜过河问题(广度搜索) 大家好,我是小白莲,今天小白莲给大家分享的是广度搜索的应用之人.狼.羊.白菜过河问题,相信大家在小时候都听过这个有趣的思考题,没听过也没关系,大概是这样的: 初始 ...
- 广度搜索与深度搜索的区别
广度搜索(Breadth-First Search,BFS)是一种基于图的遍历算法,它按照广度优先的方式遍历图中的所有节点.具体来说,该算法从起点开始向外扩展,先遍历起点所有直接相邻的节点,然后再遍历 ...
- 【人工智能】八数码问题:广度搜索、深度搜索
应用广度搜索BFS和深度搜索DFS解决八数码问题,广度搜索和深度搜索都是盲目搜索,相关理论知识,算法过程:问题求解:状态空间图和盲目搜索. 参考:7种方法求解八数码问题 Python实现A*算法解决N ...
最新文章
- string:值类型?引用类型?[转]
- unity开宝箱动画_unity简单动画实现
- centos 7 yum 安装 MongoDB 4.2
- android 设置Button或者ImageButton的背景透明 半透明 透明
- jdbc java_Java中使用JDBC
- ue4玻璃材质_UE4-材质
- 40年技术发展变革,物联网行业的趋势、现状与挑战
- Linux分区之parted命令
- context c语言作用,理解 Go context
- 不玩游戏,何谈人生!
- 小工具:(求ASCII码值)
- springboot如何访问html页面,Springboot访问html页面的教程详解
- 《御制皇陵碑》(明)朱元璋 撰
- SuperMap云许可配置
- navicat导入excel文件的步骤以及可能碰到的问题
- 什么是Bom,常用的bom属性又有哪些?
- ssm水果商城项目遇到的问题和解决
- Method类的使用
- 训练好的深度学习模型是怎么部署的?
- Centos 7 Authorization failed. Make sure polkit agent is running or run the application as superuser