难度 中等
这道题不久前做过,知道大概的算法,所以迅速通过。如果操作是遍历数组,对于等于1的位置,将与其关联的1修改为其它值,最终1的数量就是岛屿数量。
执行用时 :2 ms, 在所有 Java 提交中击败了96.16%的用户
内存消耗 :42.2 MB, 在所有 Java 提交中击败了6.25%的用户
public int numIslands(char[][] grid) {
int count = 0;
for(int i = 0; i < grid.length; i++){
for(int j = 0; j < grid[0].length; j++){
if(grid[i][j] == 49){
count++;
merge(grid, i, j);
}
}
}
return count;
}
public void merge(char[][] grid, int x, int y){
if(x < 0 || x > grid.length-1 || y < 0 || y > grid[0].length-1 || grid[x][y] != 49){
return;
}
grid[x][y] = 50;
merge(grid, x-1, y);
merge(grid, x+1, y);
merge(grid, x, y-1);
merge(grid, x, y+1);
}