※ 引述 《sustainer123 (caster)》 之铭言:
:
: ※ 引述《Rushia (早瀬ユウカの体操服 )》之铭言:
: : https://leetcode.com/problems/number-of-islands/description
: : 200. Number of Islands
: : 给你一个二维阵列 1 表示陆地 0 表示海水,相连的陆地是一的岛屿,求出有几个岛。
: : 思路:
: : 1.找到 grid[i][j] == 1 的格子就把岛屿数量+1,并以该点为中心 dfs 附近相邻的陆
地
: : 标记为已经走过。
: : 2.返回岛屿数量。
到处走 到处改成0
cpp的code写起来感觉蛮整齐的欸
class Solution {
public:
int island;
void walk(vector<vector<char>>& grid , int i , int j)
{
grid[i][j] = '0';
if(i>0)
{
if(grid[i-1][j] == '1')
{
walk(grid , i-1 , j);
}
}
if(j>0)
{
if(grid[i][j-1] == '1')
{
walk(grid , i , j-1);
}
}
if(i<grid.size()-1)
{
if(grid[i+1][j] == '1')
{
walk(grid , i+1 , j);
}
}
if(j<grid[0].size()-1)
{
if(grid[i][j+1] == '1')
{
walk(grid , i , j+1);
}
}
}
int numIslands(vector<vector<char>>& grid)
{
island = 0;
for(int a = 0 ; a < grid.size() ; a ++)
{
for(int b = 0 ; b < grid[0].size() ; b ++)
{
if(grid[a][b] == '1')
{
island++;
walk(grid,a,b);
}
}
}
return island;
}
};