对数组index的判断要放前面,要不然报数组越界异常。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 判断岛屿数量
* @param grid char字符型二维数组
* @return int整型
*/
public void dfs(char[][] grid, int i, int j){
int n = grid.length;
int m = grid[0].length;
grid[i][j] = '0';
if(i - 1 >= 0 && grid[i-1][j] == '1')//上
dfs(grid, i-1, j);
if(i + 1 < n && grid[i+1][j] == '1')//下
dfs(grid, i+1, j);
if(j - 1 >= 0 && grid[i][j-1] == '1')//左
dfs(grid, i, j-1);
if(j + 1 < m && grid[i][j+1] == '1')//右
dfs(grid, i, j+1);
}
public int solve (char[][] grid) {
// write code here
int n = grid.length;
if(n == 0) return 0;
int m = grid[0].length;
int count = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(grid[i][j] == '1'){
count++;
dfs(grid, i , j);
}
}
}
return count;
}
}