LeetCode 934 最短的桥
- 题目描述
在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大
组。)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。返回必须翻转的 0 的最小数目。(可以保证答案至少是 1。)
- 题解
等同于求两个岛屿之间的最近距离,使用广度优先搜索。
- 代码
class Solution {public:void dfs(vector<vector<int>>& A,int x,int y,int m,int n){if (x<0||x>=m||y<0||y>=n) return;que.push({x,y});for (int k=0;k<4;k++){int xx=x+d[k][0];int yy=y+d[k][1];if (xx<0||xx>=m||yy<0||yy>=n||A[xx][yy]!=1) continue;A[xx][yy]=2; // 标记当前位置已经访问过dfs(A,xx,yy,m,n);}}int bfs(vector<vector<int>>& A,int m,int n){int res=0;while (!que.empty()){int cnt=que.size();for (int i=0;i<cnt;i++){int x=que.front().first;int y=que.front().second;que.pop();for (int k=0;k<4;k++){int xx=x+d[k][0];int yy=y+d[k][1];if (xx<0||xx>=m||yy<0||yy>=n||A[xx][yy]==2) continue;if (A[xx][yy]==1) return res;A[xx][yy]=2; // 标记当前位置已经访问过que.push({xx,yy});}}res++;}return res;}int shortestBridge(vector<vector<int>>& A) { int m=A.size();if (!m) return 0;int n=A[0].size();if (!n) return 0;bool flag=false;for (int i=0;i<m;i++){for (int j=0;j<n;j++){if (A[i][j]){flag=true;A[i][j]=2;dfs(A,i,j,m,n);break;}}if (flag) break;}return bfs(A,m,n);}int d[4][2]={0,1,1,0,0,-1,-1,0};queue<pair<int,int>> que;
};
LeetCode 934 最短的桥相关推荐
- LeetCode 934. 最短的桥(2次BFS)
1. 题目 在给定的二维二进制数组 A 中,存在两座岛.(岛是由四面相连的 1 形成的一个最大组.) 现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛. 返回必须翻转的 0 的最小数目. ...
- 【LeetCode】934. 最短的桥
题目 934. 最短的桥 给你一个大小为 n x n 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域. 岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连.grid ...
- 【934. 最短的桥】
来源:力扣(LeetCode) 描述: 给你一个大小为 n x n 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域. 岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其 ...
- Leetcode最短的桥
934. 最短的桥 思路:先通过任意搜索方法找到其中一个岛屿 然后利用广度优先搜索,查找其与另一个岛屿的最短距离. class Solution {public:vector<int> d ...
- LeetCode 244. 最短单词距离 II(哈希map+set二分查找)
文章目录 1. 题目 2. 解题 2.1 暴力超时 2.2 哈希表+set二分查找 1. 题目 请设计一个类,使该类的构造函数能够接收一个单词列表. 然后再实现一个方法,该方法能够分别接收两个单词 w ...
- LeetCode 245. 最短单词距离 III
文章目录 1. 题目 2. 解题 1. 题目 给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离. word1 和 word2 是有可能相同的,并且它们将分别表 ...
- LeetCode 243. 最短单词距离
文章目录 1. 题目 2. 解题 1. 题目 给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离. 示例: 假设 words = ["practice ...
- LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)
581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...
- LeetCode 214. 最短回文串(字符串哈希)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串. 找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aace ...
最新文章
- C#之windows桌面软件第五课:串口助手实现定时关闭设备、鼠标移动使按钮颜色变化功能
- 瑞星linux u盘引导盘杀毒教程,瑞星杀毒U盘怎样用U盘启动电脑
- shell脚本应用(二)
- java泛型的作用和实现原理_java泛型的作用及实现原理
- 【Java面试题视频讲解】字符串按指定长度分隔
- 五、开始Github和码云之旅,新手如何上路
- 使用 Visual Studio Code SQLite 扩展来浏览 SAP Cloud Application Programming 数据库
- Why settype table is used in Genil component implementation
- mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解
- 1.1.0-简介-P4-一致性、2PC和3PC
- 【Daily Scrum】
- oracle对象不在回收站中,Oracle PURGE子句清除回收站中的对象
- (转)wxWindows一些网文
- dlna 斐讯r1怎么用_DLNA加持,斐讯R1说学逗唱样样行
- 这台计算机无法连接usb,爱思助手无法连接或者连接超时解决办法
- 机器学习全系列经典书籍推荐
- 计算机用户名,账户名更改
- 新手学习电脑知识的一些方法
- 从你的全世界路过(张嘉佳)
- 为什么单片机管脚设计成低电平才有效
热门文章
- mysql 索引 测试_mysql的索引测试
- mysql mongodb b树_为何Mongodb索引用B树,而Mysql用B+树?
- .bin 文件用excel文件打开_用python读Excel文件
- OpenCV中直方图均衡化
- 图像处理包magick - R版的PS - 学习笔记
- NGS基础 - 参考基因组和基因注释文件
- 怎么设置电脑壁纸_电脑怎么设置双屏或多屏显示?
- RTX5 | 软件定时器01 - 创建一个软件定时器(单次运行)
- 工厂电子产品工艺文件_建智能工厂,人机如何达到最佳组合?
- input输入框禁止自动补全和下拉提示