import java.util.*; public class Solution { /** * 判断岛屿数量 * @param grid char字符型二维数组 * @return int整型 */ public int solve(char[][] grid) { // write code here int column = grid.length, line = grid[0].length; int ans = 0; boolean[][] isVisited = new boolean[column][line]; for (int i = 0; i < column; i++) { for (int j = 0; j < line; j++) { if (!isVisited[i][j] && grid[i][j] == '1') { ans++; DFS2(grid, isVisited, i, j); } } } return ans; } public void DFS2(char[][] grid, boolean[][] isVisited, int x, int y) { if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length || grid[x][y] == '0' || isVisited[x][y]) { return; } else { isVisited[x][y] = true; DFS2(grid, isVisited, x + 1, y); DFS2(grid, isVisited, x - 1, y); DFS2(grid, isVisited, x, y + 1); DFS2(grid, isVisited, x, y - 1); } } }