题解 | #岛屿数量#
岛屿数量
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; }