链接:https://leetcode-cn.com/problems/number-of-closed-islands/
只有在边界的岛屿才不是封闭的,用深度优先搜索解题,其中一个参数标识是否为封闭的岛屿,只有到达边界时才更新。
C++代码:
class Solution {
public:
int closedIsland(vector<vector<int>>& grid) {
int res = 0;
for(int i = 0;i<grid.size();i++)
for(int j = 0;j<grid[0].size();j++)
{
if(grid[i][j]==0)
{
int val = 1;
dfs(grid,i,j,val);
res+=val;
}
}
return res;
}
void dfs(vector<vector<int>>& grid, int i,int j,int &val)
{
if(i<0||i==grid.size()||j<0||j==grid[0].size())
{
val=0;
return;
}
if(grid[i][j]==1)
return;
grid[i][j] = 1;
dfs(grid, i+1,j,val);
dfs(grid,i-1,j,val);
dfs(grid,i,j+1,val);
dfs(grid,i,j-1,val);
}
};
本文详细解析了LeetCode上的一道题目“封闭岛屿”的解决方案,通过深度优先搜索(DFS)算法来判断岛屿是否封闭,提供了C++实现代码,帮助读者理解并掌握此算法的应用。
1115

被折叠的 条评论
为什么被折叠?



