题解 | #岛屿数量#
岛屿数量
https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 判断岛屿数量
* @param grid char字符型二维数组
* @param gridRowLen int grid数组行数
* @param gridColLen int* grid数组列数
* @return int整型
*/
int arr[1000][1000],sum=0;
void dfs(int x,int y,char **grid,int gridRowLen,int *gridColLen)
{
int move[4][2]={{0,1},{1,0},{0,-1},{-1,0}},tx,ty;
for(int i=0;i<4;i++)
{
tx=x+move[i][0];
ty=y+move[i][1];
if(ty<0||ty>=*gridColLen||tx<0||tx>=gridRowLen)
continue;
if(grid[tx][ty]=='1'&&arr[tx][ty]==0)
{
arr[tx][ty]=1;
dfs(tx,ty,grid,gridRowLen,gridColLen);
}
}
}
//arr用以即时记录走过的路径
//brr用以标记整块岛屿
int solve(char** grid, int gridRowLen, int* gridColLen ) {
// write code here
for(int q=0;q<gridRowLen;q++)
{
for(int w=0;w<*gridColLen;w++)
{
if(grid[q][w]=='1'&&arr[q][w]==0)
{
arr[q][w]=1;
dfs(q,w,grid,gridRowLen,gridColLen);
sum++;
}
}
}
return sum;
}
