美文网首页
200. 岛屿数量

200. 岛屿数量

作者: bangbang2 | 来源:发表于2020-07-14 16:13 被阅读0次
image.png
image.png

只能是水平或竖直来进行切割小岛


image.png
在遍历整个矩阵时,如果遇到是1,向东南西北四个方向进行扩散:

(1)观察是否越界
(2)观察如果是0,说明已经到达小岛的边界,就什么也不做
如果是1,就将当前值变为0(这是沉没的概念),再遍历下一个点,不断递归进行之前的上述操作


image.png
可以先往下走,再往右走,再往上走----在遍历时,可以用深度优先遍历,一直走到黑再说
class Solution {
    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]=='1'){
                    count++;
                    dfs(i,j,grid);
                }
            }
        }
        return count;
    }
  void dfs(int i,int j,char[][] grid){
      if(i<0||i>grid.length-1||j<0||j>grid[0].length-1||grid[i][j]=='0'){//发生越界,或为0,直接返回
          return ;
      }
      grid[i][j]='0';//沉没陆地
      dfs(i-1,j,grid);//向上递归
      dfs(i+1,j,grid);
      dfs(i,j-1,grid);
      dfs(i,j+1,grid);
  }
}

相关文章

  • 200. 岛屿数量

    200. 岛屿数量

  • LeetCode-200-岛屿数量

    LeetCode-200-岛屿数量 200. 岛屿数量[https://leetcode-cn.com/probl...

  • 200. 岛屿数量

    我的思路: 采用深度优先搜索,把附近为1的全部进行标记。 对每一个格子遍历进行遍历,若为1且没被标记,则ret++...

  • 200. 岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或...

  • 200. 岛屿数量

    只能是水平或竖直来进行切割小岛 在遍历整个矩阵时,如果遇到是1,向东南西北四个方向进行扩散: (1)观察是否越界(...

  • 200. 岛屿数量

    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座...

  • 200.岛屿数量

    源码如下 四连通的经典题。 去检查一个1周围四个方向是否有没走过的1。同时遍历的1,标记一个数字,标记完后标记数字自加。

  • 200.岛屿数量

    给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿...

  • 200. 岛屿数量

    200. 岛屿数量[https://leetcode-cn.com/problems/number-of-isla...

  • 200. 岛屿数量

    解法 图类联通性问题,可以用深度优先遍历,往4个方向进行遍历,直到越界,或者找到的元素不是1,或者节点已经访问过,...

网友评论

      本文标题:200. 岛屿数量

      本文链接:https://www.haomeiwen.com/subject/edcfhktx.html