深度优先搜索
public class Solution {
public int numIslands(char[][] grid) {
int row = grid.length;
if (row == 0) return 0;
int column = grid[0].length;
int res = 0;
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
if (grid[i][j] == '1') {
res++;
search(i, j, row, column, grid);
}
}
}
return res;
}
public void search(int i, int j, int row, int column, char[][] grid) {
if (i < 0 || i >= row) return;
if (j < 0 || j >= column) return;
if (grid[i][j] == '0') return;
grid[i][j] = '0';
search(i + 1, j, row, column, grid);
search(i - 1, j, row, column, grid);
search(i, j + 1, row, column, grid);
search(i, j - 1, row, column, grid);
}
}