classSolution{int m,n,ret;boolean[][] vis;publicintnumIslands(char[][] grid){m = grid.length;n = grid[0].length;vis =newboolean[m][n];for(int i =0; i < m; i++)for(int j =0; j < n; j++){if(!vis[i][j]&& grid[i][j]=='1'){ret++;//把这个岛屿附近的1标记一下dfs(grid,i,j);}}return ret;}int[] dx ={0,0,-1,1};int[] dy ={1,-1,0,0};privatevoiddfs(char[][] grid,int i,int j){vis[i][j]=true;//标记for(int k =0; k <4; k++){int x = i + dx[k];int y = j + dy[k];if(x >=0&& x < m && y >=0&& y < n &&!vis[x][y]&& grid[x][y]=='1'){dfs(grid,x,y);}}}}