【发布时间】:2020-04-30 13:39:43
【问题描述】:
这是 Leetcode 200。问题陈述是: 给定'1'(陆地)和'0'(水)的二维网格图,计算岛屿的数量。岛屿四面环水,由相邻陆地水平或垂直连接而成。您可以假设网格的所有四个边缘都被水包围。
11110
11010
11000
00000
输出:1
在尝试解决此问题时,我遇到了错误 引用绑定到类型为“std::vector >”的空指针 (stl_vector.h)
我得到了一些输入的正确答案,但总的来说,当我提交它时,我遇到了错误。如果有人能帮助我解决这个问题,我将不胜感激。
class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
int count=0;
int n=grid.size();
int m=grid[0].size();
if(grid.size()==0 || grid[0].size()==0)
return 0;
bool left,right,top,bottum;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(grid[i][j]=='1')
{
count++;
BFS(grid,i,j);
}
}
return count;
}
void BFS(vector< vector <char> >& grids,int i,int j)
{
if(i<0 || j<0 || i>=grids.size() || j>=grids[0].size() || grids[i][j]=='0')
return ;
grids[i][j]='0';
BFS(grids,i+1,j);
BFS(grids,i,j+1);
BFS(grids,i-1,j);
BFS(grids,i,j-1);
}
};
【问题讨论】:
-
grid和grids是如何构造的? -
j>=grids[0].size()会比j>=grids[i].size()更安全,因为它是您将访问的行i。 (暂时有人会给你发一个非矩形向量的向量) -
grids 和 grid 是在 program 中实现的二维向量。我们只需要实现一个返回岛屿数量的函数。