题目 |
题目传送门:传送门(点击此处)
题解 |
思路
题目虽然是 中等
题目,但也是比较经典的题目,比如说之前做过的 994. 腐烂的橘子,和这道题目很像,都是比较经典的图的遍历,直接使用 DFS
即可
直接遍历,遇到1之后,分别向四个方向进行拓展,把是1的置为0,是0直接返回
code
class Solution {
int rows;
int cols;
public int numIslands(char[][] grid) {
int res = 0;
if (grid.length == 0) return 0;
rows = grid.length;
cols = grid[0].length;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (grid[i][j] == '1') {
getIsland(grid, i, j);
res++;
}
}
}
return res;
}
public void getIsland(char[][] grid, int i, int j) {
if (grid[i][j] == '1') {
grid[i][j] = '0';
if(i > 0) getIsland(grid, i - 1, j); // 上
if(j > 0) getIsland(grid, i, j - 1); // 左
if(i < rows - 1) getIsland(grid, i + 1, j); // 下
if(j < cols - 1) getIsland(grid, i, j + 1); // 右
}
}
}