
本题由于没有给出开始搜索的位置,所以每一个位置都要进行一次广度优先搜索
另外为了不修改原数组数据,需要设置一个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;
- }
- }
- }
- }
- };
-
相关阅读:
前端实现网页转PDF并保存(vue方案)
LeetCode 每日一题 2024/4/15-2024/4/21
Pom文件的依赖与starter启动器的作用
TensorFlow的GPU使用相关设置整理
532. 数组中的 k-diff 数对
C++实现ETW进行进程变动监控
国庆加速度!新增功能点锁定功能,敏捷开发新增估算功能,助力项目快速突破!
Alins - 化繁为简、极致优雅的WebUI框架
MyBatis的逆向工程之奢华尊享版
Selenium + Chrome带配置项启动
-
原文地址:https://blog.csdn.net/2301_76197086/article/details/138085953