栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

每日一题 1765. 地图中的最高点

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每日一题 1765. 地图中的最高点

题:求二维地图上可能存在的最高点的高度。即在地图上给出水域,求对空白区域填充陆地的方法。

输入m*n的二维数组isWater,表示该位置是否为水域。1是0否。

求高度时,水域高度为0。且相邻陆地高度差最多为1。

解:

参考题解。广度优先BFS,从水域开始,填充相邻且未被设置的格子。

class Solution:
    def highestPeak(self, isWater: List[List[int]]) -> List[List[int]]:
        m, n = len(isWater), len(isWater[0])
        ans = [[water-1 for water in row] for row in isWater] #初始化,将水域高度设置为0.陆地初始化-1
        q = deque((i,j) for i, row in enumerate(isWater) for j,water in enumerate(row) if water)#水域入队
        while q:
            i, j = q.popleft()
            for x,y in ((i-1,j),(i+1, j), (i, j-1), (i, j+1)):
                if 0<=x 

补充:

1.Python中比较运算可以任意串连;例如,x < y <= z 等价于 x < y and y <= z。

 2.deque 双向队列,添加或弹出元素都可以是双向的。

collections --- 容器数据类型 — Python 3.10.2 文档


 

 append(), pop()是从右端。

appendleft(), popleft()是从左端。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/723589.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号