
本题由于没有给出开始搜索的位置,所以每一个位置都要进行一次广度优先搜索
另外为了不修改原数组数据,需要设置一个bool类型的二维数组vis来判断某个位置是否被搜索过
- class Solution {
- int dx[4]={1,-1,0,0};
- int dy[4]={0,0,1,-1};
- typedef pair<int,int> PII;
- int m=0,n=0;
- vector
bool>> vis;//指示数组,指示某个位置是否被搜索过 - public:
- int numIslands(vector
char >>& grid) { - int ret=0;//岛屿数量
- m=grid.size();
- n=grid[0].size();
- vis.resize(m);//初始化指示数组
- for(int i=0;i
//初始化指示数组 - {
- vis[i].resize(n);
- for(int j=0;j
false; - }
- //每个位置都要进行一次广度优先搜索
- for(int i=0;i
- {
- for(int j=0;j
- {
- if(grid[i][j]=='1'&&!vis[i][j])
- {
- ++ret;
- //广度优先搜索
- bfs(grid,i,j);
- }
- }
- }
- return ret;
- }
- //广度优先搜索
- void bfs(vector
char >>& grid,int i,int j) - {
- queue
q; - q.push({i,j});
- vis[i][j]=true;
- while(q.size())
- {
- int a=q.front().first;
- int b=q.front().second;
- q.pop();
- for(int k=0;k<4;++k)
- {
- int x=a+dx[k];
- int y=b+dy[k];
- if(x>=0&&x
=0&&y'1'&&!vis[x][y]) - {
- q.push({x,y});
- vis[x][y]=true;
- }
- }
- }
- }
- };
-
相关阅读:
2023年7月京东打印机行业品牌销售排行榜(京东运营数据分析)
git Husky
力扣-43题 字符串相乘(C++)- 大数相乘
vue实战入门后台篇十:springboot+mybatis实现网站后台-项目整合发布测试
10 种常用的字符串方法
apollo源码启动服务,apollo源码分析
(原创)【MAUI】一步一步实现“悬浮操作按钮”(FAB,Floating Action Button)
LeetCode 349 两个数组的交集 - Java 实现
Hadoop----------大数据单机伪集群搭建(这一篇就够了)
数据分析软件Tableau 和 Power BI 怎么选?看这篇文章就够了
-
原文地址:https://blog.csdn.net/2301_76197086/article/details/138085953