解題思路
每當找到一個沒看過的島,就四方探索整個範圍並且把該位置抹掉。
程式碼
class Solution {
public:
void bfs(vector<vector<char>>& grid, int x, int y)
{
int dx[4] = {-1, 0, 0, 1}, dy[4] = {0, 1, -1, 0};
if(0 <= x && x < grid.size() && 0 <= y && y < grid[0].size() && grid[x][y] == '1')
{
grid[x][y] = '0';
for(int i=0; i<4; i++)
bfs(grid, x+dx[i], y+dy[i]);
}
}
int numIslands(vector<vector<char>>& grid) {
int num = 0;
for(int i=0; i<grid.size(); i++)
{
for(int j=0; j<grid[0].size(); j++)
{
if(grid[i][j] == '1')
{
num++;
bfs(grid, i, j);
}
}
}
return num;
}
};
沒有留言:
張貼留言