当前位置:网站首页>Leetcode 200.岛屿数量 BFS
Leetcode 200.岛屿数量 BFS
2022-08-10 19:06:00 【Alkali!】
题目描述
岛屿数量
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
思路
直接BFS求就完事了
代码
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
vector<vector<bool>> st(grid.size()); //标记数组
for(int i=0;i<grid.size();i++)
st[i].resize(grid[0].size());
for(int i=0;i<grid.size();i++) //初始化为未访问
for(int j=0;j<grid[0].size();j++)
st[i][j]=false;
int res=0; //岛屿数量
for(int i=0;i<grid.size();i++)
for(int j=0;j<grid[0].size();j++)
{
if(grid[i][j]=='1')
{
if(st[i][j]) continue;
else
{
res++;
bfs(st,i,j,grid); //bfs
}
}
}
return res;
}
void bfs(vector<vector<bool>>& st,int x,int y,vector<vector<char>>& gap)
{
int n=gap.size(),m=gap[0].size();
queue<pair<int,int>> q;
q.push({
x,y});
st[x][y]=true;
int dx[4]={
-1,0,1,0},dy[4]={
0,1,0,-1};
while(!q.empty())
{
auto t=q.front();
q.pop();
for(int i=0;i<4;i++)
{
int nx=t.first+dx[i],ny=t.second+dy[i];
if(nx<0||nx>=n||ny<0||ny>=m) continue; //出界
if(gap[nx][ny]=='0') continue; //没出界,但是0
if(st[nx][ny]) continue; //是1,但访问过了
q.push({
nx,ny});
st[nx][ny]=true;
}
}
}
};
边栏推荐
- 铱钌合金/氧化铱仿生纳米酶|钯纳米酶|GMP-Pd纳米酶|金钯复合纳米酶|三元金属Pd-M-Ir纳米酶|中空金铂合金纳米笼核-多空二氧化硅壳纳米酶
- LeetCode·27.移除元素·双指针
- 网站架构探测&chrome插件用于信息收集
- QoS Quality of Service Eight Congestion Avoidance
- 【自然语言处理】【向量表示】PairSupCon:用于句子表示的成对监督对比学习
- servlet映射路径匹配解析
- 从 Delta 2.0 开始聊聊我们需要怎样的数据湖
- QoS服务质量八拥塞避免
- [Teach you how to do mini-games] How to lay out the hands of Dou Dizhu?See what the UP master of the 250,000 fan game area has to say
- 【毕业设计】基于Stm32的智能疫情防控门禁系统 - 单片机 嵌入式 物联网
猜你喜欢
[email protected]纳米模拟酶|PtCo合金纳米粒子"/>水溶性合金量子点纳米酶|CuMoS纳米酶|多孔硅基Pt(Au)纳米酶|[email protected]纳米模拟酶|PtCo合金纳米粒子

铁蛋白-AHLL纳米颗粒|人表皮生长因子-铁蛋白重链亚基纳米粒子(EGF-5Cys-FTH1)|铁蛋白颗粒包载氯霉素Chloramphenicol-Ferritin

Solution for thread not gc-safe when Rider debugs ASP.NET Core

铁蛋白颗粒负载雷替曲塞/培美曲塞/磺胺地索辛/金刚烷(科研试剂)

Keras深度学习实战(17)——使用U-Net架构进行图像分割

Modern Privacy-Preserving Record Linkage Techniques: An Overview论文总结
[Go WebSocket] 你的第一个Go WebSocket服务: echo server

“2022零信任神兽方阵”启动调研,欢迎各单位填报信息

laya打包发布apk

转铁蛋白Tf功能化β-榄香烯-雷公藤红素/紫杉醇PLGA纳米粒/雷公藤甲素脂质体(化学试剂)
随机推荐
Win11连接投影仪没反应怎么解决?
【LeetCode】42、接雨水
皮质-皮质网络的多尺度交流
7-2 乒乓人训练大师(双指针)
flask生成路由的2种方式和反向生成url
转铁蛋白修饰蛇床子素长循环脂质体/负载三七皂苷R1的PEG-PLGA纳米粒([email protected] NPs)
苹果字体查找
Colocate Join :ClickHouse的一种高性能分布式join查询模型
What is the upstream bandwidth and downstream bandwidth of the server?
TikTok选品有什么技巧?
365天挑战LeetCode1000题——Day 053 求解方程 解析 模拟
血红素-金纳米颗粒(Heme-AuNP)复合纳米酶|金纳米颗粒核多孔空心碳纳米球壳([email protected])纳米酶
【毕业设计】基于Stm32的智能疫情防控门禁系统 - 单片机 嵌入式 物联网
mysql 中大小写问题
力扣18-四数之和——双指针法
【深度学习前沿应用】图像风格迁移
【毕业设计】基于STM32的天气预报盒子 - 嵌入式 单片机 物联网
几行深度学习代码设计包含功能位点的候选免疫原、酶活性位点、蛋白结合蛋白、金属配位蛋白
网络虚拟化
Metasploit——渗透攻击模块(Exploit)