LeetCode 1765. 地图中的最高点(BFS)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个大小为 m x n 的整数矩阵 isWater ,它代表了一个由 陆地 和 水域 单元格组成的地图。

如果 isWater[i][j] == 0 ,格子 (i, j) 是一个 陆地 格子。
如果 isWater[i][j] == 1 ,格子 (i, j) 是一个 水域 格子。

你需要按照如下规则给每个单元格安排高度:

  • 每个格子的高度都必须是非负的。
  • 如果一个格子是是 水域 ,那么它的高度必须为 0
  • 任意相邻的格子高度差 至多 为 1
    当两个格子在正东、南、西、北方向上相互紧挨着,就称它们为相邻的格子。(也就是说它们有一条公共边)

找到一种安排高度的方案,使得矩阵中的最高高度值 最大

请你返回一个大小为 m x n 的整数矩阵 height ,其中 height[i][j] 是格子 (i, j) 的高度。如果有多种解法,请返回 任意一个 。

示例 1:
在这里插入图片描述

输入:isWater = [[0,1],[0,0]]
输出:[[1,0],[2,1]]
解释:上图展示了给各个格子安排的高度。
蓝色格子是水域格,绿色格子是陆地格。

示例 2:
在这里插入图片描述

输入:isWater = [[0,0,1],[1,0,0],[0,0,0]]
输出:[[1,1,0],[0,1,1],[1,2,2]]
解释:所有安排方案中,最高可行高度为 2 。
任意安排方案中,只要最高高度为 2 且符合上述规则的,都为可行方案。提示:
m == isWater.length
n == isWater[i].length
1 <= m, n <= 1000
isWater[i][j] 要么是 0 ,要么是 1 。
至少有 1 个水域格子。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/map-of-highest-peak
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 广度优先搜索即可,先把水域加入队列
class Solution {
public:vector<vector<int>> highestPeak(vector<vector<int>>& isWater) {int m = isWater.size(), n = isWater[0].size();queue<pair<int,int>> q;vector<vector<bool>> vis(m, vector<bool>(n, false));for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++)if(isWater[i][j]) // 是水{q.push({i,j});vis[i][j] = true;}}vector<vector<int>> dir = {{1,0},{0,1},{-1, 0},{0,-1}};int h = 0;while(!q.empty()){int size = q.size();while(size--){pair<int,int> t = q.front();q.pop();isWater[t.first][t.second] = h;for(int k = 0; k < 4; ++k){int x = t.first+dir[k][0];int y = t.second+dir[k][1];if(x>=0 && x < m && y>=0 && y < n && !vis[x][y]){q.push({x,y});vis[x][y] = true;}}}h++;}return isWater;}
};

464 ms 106.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 停止同步_MYSQL从库数据冲突导致同步停止

在兼职DBA的工作中&#xff0c;由于同事在数据库上误操作&#xff0c;导致数据库同步停止&#xff0c;情况如下&#xff1a;mysql>show slave status\G;*************************** 1. row***************************Slave_IO_State: Waiting formaster to send eventMast…

jQuery$命名冲突问题解决方法

也许你在看此文章之前还不知道jquery有一个noConflict()东西了&#xff0c;它就是为了避免与其它js插件碰到相同变量的一个解决方法&#xff0c;利用noConflict()可以把变量存到其它指定的变量中去如&#xff0c;我把$存到jq中 代码如下 复制代码 var jq $.noConflict(); 这样…

LeetCode 1768. 交替合并字符串

文章目录1. 题目2. 解题1. 题目 给你两个字符串 word1 和 word2 。 请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。 如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例 1&#xff1a; 输入…

.git文件夹_Git幸存者指南

> Learn how to use Git to version control a cake recipe… and other things like code!或如何用Git烤蛋糕Git很难。 Git令人生畏。 学习曲线很大。 作为软件工程师&#xff0c;这至关重要。Git是用于版本控制的行业标准。 这是我们大多数人在学校或编码训练营中都不学的…

mysql偏移注入_移位溢注:告别靠人品的偏移注入

*本文原创作者&#xff1a;SeagullGR&#xff0c;本文属FreeBuf原创奖励计划&#xff0c;未经许可禁止转载在Access数据库类型注入的时候&#xff0c;我们获取不到列名(前提是有表名)&#xff0c;一般会选择使用偏移注入&#xff0c;但是这种注入方式往往借助的是个人的人品&am…

Jquery 中的CheckBox、 RadioButton、 DropDownList的取值赋值

1.获取选中值&#xff0c;三种方法都可以&#xff1a; $(input:radio:checked).val()&#xff1b; $("input[typeradio]:checked").val(); $("input[namerd]:checked").val(); 2.设置第一个Radio为选中值&#xff1a; $(input:radio:first).attr(checked, …

LeetCode 1769. 移动所有球到每个盒子所需的最小操作数(前缀和)

文章目录1. 题目2. 解题1. 题目 有 n 个盒子。给你一个长度为 n 的二进制字符串 boxes &#xff0c;其中 boxes[i] 的值为 0 表示第 i 个盒子是 空 的&#xff0c;而 boxes[i] 的值为 1 表示盒子里有 一个 小球。 在一步操作中&#xff0c;你可以将 一个 小球从某个盒子移动到…

代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...

代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业 日期&#xff1a;2020-03-17 11:22 CO 353 - Homework assignment 4 Winter ’20 Page 1 CO 353 - Winter ’20 Homework assignment #4: Instructions: ? You may use any result proved in class directly,…

JNative用法注意事项

公司要做个跟设备打交道的web系统&#xff0c;需要java调用dll。搞java的同事说JNative看起来挺好使的&#xff0c;找俺帮忙调通。用的是1.3.1版本 环境设置。 JNative的调试信息需要打开才能更清楚些&#xff0c;要不总是说没加载库&#xff0c;跟没说一样。 System.setProper…

虚拟主机不支持mysql_虚拟主机能用mysql么

原标题&#xff1a;虚拟主机能用mysql么虚拟主机能用mysql么&#xff1f;虚拟主机能用mysql的。MySQL数据库一般与Linux系统搭配使用较多&#xff0c;绝大部分的服务商都会提供支持MySQL数据库的虚拟主机产品。MySQL是一种关系数据库管理系统&#xff0c;关系数据库将数据保存在…

python3知识点汇总_35个高级Python知识点总结

No.1 一切皆对象 众所周知&#xff0c;Java中强调“一切皆对象”&#xff0c;但是Python中的面向对象比Java更加彻底&#xff0c;因为Python中的类(class)也是对象&#xff0c;函数&#xff08;function&#xff09;也是对象&#xff0c;而且Python的代码和模块也都是对象。 Py…

LeetCode 1770. 执行乘法运算的最大分数(DP)

文章目录1. 题目2. 解题1. 题目 给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers &#xff0c;其中 n > m &#xff0c;数组下标 从 1 开始 计数。 初始时&#xff0c;你的分数为 0 。 你需要执行恰好 m 步操作。在第 i 步操作&#xff08;从 1 开始 计数&#x…

统计--过滤(筛选)索引的统计信息过期问题测试

基础知识普及&#xff1a; 对于筛选索引&#xff0c;MSDN如是说&#xff1a; 筛选索引是一种经过优化的非聚集索引&#xff0c;尤其适用于涵盖从定义完善的数据子集中选择数据的查询。 筛选索引使用筛选谓词对表中的部分行进行索引。 与全表索引相比&#xff0c;设计良好的筛选…

IDEA连接mysql出现时区错误_idea连接数据库时区错误

错误界面IDEA连接mysql&#xff0c;地址&#xff0c;用户名&#xff0c;密码&#xff0c;数据库名&#xff0c;全都配置好了&#xff0c;点测试连接&#xff0c;咔&#xff01;不成功&#xff01;界面是这样的&#xff0c;翻译过来就是&#xff1a;服务器返回无效时区。进入“高…

springboot listener_Springboot 监听redis key的过期事件

项目中常常会碰到这样的需求&#xff0c;用户下订单后&#xff0c;30分钟未完成自动取消订单的功能。有人说这个简单呀&#xff0c;写个定时任务就搞定了。除了定时任务之外&#xff0c;难道就没有其他的方法来实现吗&#xff1f;有--Redis 的键空间通知事件。在Redis 2.8.0之后…

LeetCode 1771. 由子序列构造的最长回文串的长度(最长回文子序)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 word1 和 word2 &#xff0c;请你按下述方法构造一个字符串&#xff1a; 从 word1 中选出某个 非空 子序列 subsequence1 。从 word2 中选出某个 非空 子序列 subsequence2 。连接两个子序列 subsequence1 subsequence2 &…

python牛顿法计算平方根_常用的平方根算法详解与实现

本文从属于笔者的数据结构与算法系列文章。 SquareRoot 平方根计算一直是计算系统的常用算法&#xff0c;本文列举出几张简单易懂的平方根算法讲解与实现。其中Java版本的代码参考这里 Reference Babylonian:巴比伦算法/牛顿法 巴比伦算法可能算是最早的用于计算$sqrt{S}$的算法…

mysql主辅同步报错_mysql数据库主辅同步Slave_IO_Running,Slave_SQL_Running错误

Slave_IO_Running&#xff1a;连接到主库&#xff0c;并读取主库的日志到本地&#xff0c;生成本地日志文件Slave_SQL_Running:读取本地日志文件&#xff0c;并执行日志里的SQL命令。这个错误是出现在我重启电脑之后。从以上图片来看&#xff0c;我遇到的错误是第二条&#xff…

R.java文件介绍

HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R { public static final class attr { } public static final class drawable { public static final int icon0x7f020000; } public static final class layou…

移动计算比移动数据更划算

learn from 从0开始学大数据&#xff08;极客时间&#xff09; 数据太大&#xff08;PB级别&#xff09;&#xff0c;将程序发送到数据所在地方进行计算&#xff0c;比移动数据更划算 如何实现的&#xff1a; 将大规模数据存储在集群的所有服务器上&#xff0c;&#xff08;H…