岛屿数量 /* 用深搜,计算1的连通块数量 */ class Solution { public int numIslands(char[][] grid) { int cnt = 0; for (int i = 0; i < grid.length; i++) { for (int i1 = 0; i1 < grid[i].length; i1++) { if (grid[i][i1] == '1') { dfs(grid, i, i1); cnt ++; } } } return cnt; } int[] dx = {0, 0, -1, 1}; int[] dy = {-1, 1, 0, 0}; public void dfs(char[][] grid, int x, int y) { grid[x][y] = '0'; for (int i = 0; i < 4; i ++) { int x1 = x + dx[i], y1 = y + dy[i]; if (x1 >= 0 && x1 < grid.length && y1 >= 0 && y1 < grid[0].length && grid[x1][y1] == '1') { dfs(grid, x1, y1); } } } }