LeetCode200. 岛屿数量
题目描述
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
样例输入与输出
示例 1:
输入:
11110
11010
11000
00000
输出:
1
代码实现
class Solution {
public int numIslands(char[][] grid) {
int numoflands = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j]=='1') {
// System.out.println("岛屿数++,位置为:"+i+" "+j);
numoflands++;
deleteLands(grid, i, j);
}
}
}
return numoflands;
}
static void deleteLands(char[][] grid,int c_x,int c_y) {
grid[c_x][c_y]='0';
int length = grid.length,width = grid[0].length;
//先处理左侧节点
if (c_x>0&&grid[c_x-1][c_y]=='1') {
deleteLands(grid, c_x-1, c_y);
}
//处理右侧节点
if (c_x<length-1&&grid[c_x+1][c_y]=='1') {
deleteLands(grid, c_x+1, c_y);
}
//处理上侧节点
if (c_y>0&&grid[c_x][c_y-1]=='1') {
deleteLands(grid, c_x, c_y-1);
}
//处理下方节点
if (c_y<width-1&&grid[c_x][c_y+1]=='1') {
deleteLands(grid, c_x, c_y+1);
}
}
}