当前位置: 首页 > news >正文

接入服务商网站备案管理系统技术规范要求美食软文300范例

接入服务商网站备案管理系统技术规范要求,美食软文300范例,昆明企业网站制作,公司网站制作商今日份题目: 给你一个大小为 n x n 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域。 岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连。grid 中 恰好存在两座岛 。 你可以将任意数量的 0 变为 1 &#…

今日份题目:

给你一个大小为 n x n 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域。

是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连。grid恰好存在两座岛

你可以将任意数量的 0 变为 1 ,以使两座岛连接起来,变成 一座岛

返回必须翻转的 0 的最小数目。

示例1

输入:grid = [[0,1],[1,0]]
输出:1

示例2

输入:grid = [[0,1,0],[0,0,0],[0,0,1]]
输出:2

示例3

输入:grid = [[1,1,1,1,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,1,1,1,1]]
输出:1

提示

  • n == grid.length == grid[i].length

  • 2 <= n <= 100

  • grid[i][j]01

  • grid 中恰有两个岛

题目思路

分析题目,我们有两个岛屿,找一个岛到另一个岛的最小距离。找到其中一座岛,然后将其不断向外延伸一圈,直到到达了另一座岛,延伸的圈数即为最短距离。所以,第一步,我们要找到第一个岛屿;第二步,我们要从第一个岛屿的所有位置进行bfs搜索找到另一个岛。

具体来说,我们要先遍历矩阵中的所有位置,然后找到第一个是岛的位置;从这个位置开始bfs遍历找到所有该岛的位置并标记为-1;然后,对岛屿中的所有点进行bfs搜索,找到第一个到达另一个岛屿的点,记录的step就是最小的距离,也就是我们要找的结果。如果没有找到,就返回0(一般不会出现这种情况)。

注意:遍历过的点一定要标记,本题标记为-1,否则遍历周边时会回去。

代码

class Solution 
{
public:int shortestBridge(vector<vector<int>>& grid) {int n=grid.size();int dirs[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; //上下左右四个方向vector<pair<int, int> > island;queue<pair<int, int> > p;//遍历所有的点,找到第一个岛屿for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {//找到第一个岛屿,进行第一次bfs遍历if(grid[i][j]==1) {p.push({i,j});grid[i][j]=-1;//bfs获得第一个岛屿的完整位置while(!p.empty()) {auto [x,y]=p.front();p.pop();island.push_back({x,y}); //存放岛屿位置for(int k=0;k<4;k++) //遍历四个方向{//获取新位置int nx=x+dirs[k][0];int ny=y+dirs[k][1];if(nx>=0&&ny>=0&&nx<n&&ny<n&&grid[nx][ny]==1) {//该岛屿已遍历过p.push({nx,ny});grid[nx][ny]=-1; //标记为已到过}}}//将所有的岛屿加入到bfs队列中for(auto &&[x,y]:island) {p.push({x,y});}//从第一个岛屿的所有位置进行第二次bfs搜索找到第二个岛屿int step=0;while(!p.empty()) {int sz=p.size();for(int i=0;i<sz;i++) {auto [x,y]=p.front();p.pop();for(int k=0;k<4;k++) {//获取新位置int nx=x+dirs[k][0];int ny=y+dirs[k][1];if(nx>=0&&ny>=0&&nx<n&&ny<n) {if(grid[nx][ny]==0) //是水域,加入bfs队列继续找{p.push({nx,ny});grid[nx][ny]=-1; //标记为已到达过} //找到第二个岛屿了,返回步数else if(grid[nx][ny]==1) {return step;}}}}step++; //进行完一层bfs小搜索就加一}}}}return 0;}
};

提交结果

欢迎大家在评论区讨论,如有不懂的部分,欢迎在评论区留言!

更新不易,宝子们点个赞支持下,谢谢!

http://www.tj-hxxt.cn/news/28112.html

相关文章:

  • 淄博市建设局网站seo数据是什么
  • 网站建设精美模板网站seo搜索引擎优化怎么做
  • 做网站比较好的公司有哪些信息互联网推广
  • 最优秀的无锡网站建设百度安装免费下载
  • 宁波市网站建设公司seo好seo
  • 亳州是网站建设seo关键词推广
  • 温州网站建设方案外包怎么免费建公司网站
  • 中华人民住房和城乡建设厅网站广告营销案例分析
  • 天津 公司做网站武汉seo网站优化运营
  • 企业网站建设都能做哪些工作线上推广引流渠道
  • 设计参考图哪个网站好百度收录权重
  • 开源商城系统源码外贸网站seo教程
  • 建设网站需要哪些元素网络服务提供者收集和使用个人信息应当符合的条件有
  • 做网站怎么和广告公司合作常熟网站建设
  • 番禺网站制作多少钱百度商城app
  • 网站品牌建设营销策略4p分析怎么写
  • 河北省企业网站建设公司免费网站建站2773
  • 网站怎么做公司百度搜索优化
  • 平台推广销售话术百度关键词优化专家
  • wordpress小型论坛主题百度关键词优化快速排名软件
  • 全国网站建设哪家专业太原关键词排名优化
  • 重庆建设工程信息网官网成绩深圳seo优化推广公司
  • 免费加盟零投资百度搜索排名优化
  • 电子商城开发网站建设免费发布推广的网站有哪些
  • 上海网站建设优化seo河北seo基础
  • 德语网站制作关键词优化需要从哪些方面开展?
  • 基于html5的移动端网站开发搜索seo怎么优化
  • 怎样查看网站关键词网站收录查询系统
  • 网站源代码分列怎么做seo推广软件品牌
  • 网站分为哪几个部分深圳网络络推广培训