怎样算作一个岛屿?
连成一片的’1’构成一个岛屿。比如,示例一中所有的’1’连接着所以构成了一个岛屿。
遍历整个二维数组,当遇到’1’,把和他相连的’1’变成’*’,保存岛屿个数的num加1,然后接着遍历,直到遍历完整个二位数组
深度遍历和递归相关
广度遍历和队列相关
class Solution {
/*
深度遍历解法
*/
public int numIslands(char[][] grid) {
// if(grid.length == 0){
// return 0;
// }
int num = 0;
for(int i = 0;i < grid.length;i++){
for(int j = 0;j < grid[0].length;j++){
if(grid[i][j] == '1'){
process(grid,i,j);
num++;//这里出过错,只有grid[i][j]等于'1',num才能自增,不能写到if外面。
}
}
}
return num;
}
public void process(char[][]grid, int i, int j){
if(i == -1
|| j == -1
|| i == grid.length
|| j == grid[0].length
|| grid[i][j] != '1'){//这里出过错,先判断越界再判断不是'1',否则会报越界错误
return ;
}
grid[i][j] = '*';
process(grid,i+1,j);
process(grid,i-1,j);
process(grid,i,j+1);
process(grid,i,j-1);
return ;
}
}