本题由于没有给出开始搜索的位置,所以每一个位置都要进行一次广度优先搜索
另外为了不修改原数组数据,需要设置一个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;
- }
- }
- }
- }
- };
-
相关阅读:
上下文切换
算法通关村第一关——链表青铜挑战笔记
【Canvas】js用Canvas绘制阴阳太极图动画效果
【解决方案】可视化全链路日志追踪-日志追踪系统
Python实现WOA智能鲸鱼优化算法优化卷积神经网络回归模型(CNN回归算法)项目实战
学习记录2022
Java面试题大全(整理版)1000+面试题附答案详解最全面看完稳了
datafaker连Oracle造测试数据
155. 最小栈【73】
vue 配置绕过跨域问题
-
原文地址:https://blog.csdn.net/2301_76197086/article/details/138085953