美文网首页程序员
力扣 200 岛屿数量

力扣 200 岛屿数量

作者: zhaojinhui | 来源:发表于2020-09-02 09:55 被阅读0次

题意:给定一个二维数组,找出其中的岛屿

思路:遍历二维数组,遇到“1”结果+1,同时对当前位置进行dfs,把于它相连的所有的"1"都变更为“2”

思想:DFS

复杂度:时间O(n2),空间O(n)

class Solution {
    public int numIslands(char[][] grid) {
        int m = grid.length;
        if(m == 0)
            return 0;
        int n = grid[0].length;
        int cnt = 0;
        for(int i=0;i<m;i++) {
            for(int j=0;j<n;j++) {
                if(grid[i][j] == '1') {
                    change(i, j, grid, m, n);
                    cnt++;
                }
            }
        }
        return cnt;
    }
    
    void change(int i, int j, char[][] grid, int m, int n) {
        if(i<0||j<0||i>=m||j>=n||grid[i][j] == '0' || grid[i][j] == '2') {
            return;
        }
        grid[i][j] = '2';
        change(i+1, j, grid, m, n);
        change(i, j-1, grid, m, n);
        change(i-1, j, grid, m, n);
        change(i, j+1, grid, m, n);
    }
}

相关文章

  • 力扣 200 岛屿数量

    题意:给定一个二维数组,找出其中的岛屿 思路:遍历二维数组,遇到“1”结果+1,同时对当前位置进行dfs,把于它相...

  • LeetCode-200-岛屿数量

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

  • 200. 岛屿数量

    200. 岛屿数量

  • 200. 岛屿数量

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

  • 200. 岛屿数量

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

  • 200. 岛屿数量

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

  • 200. 岛屿数量

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

  • 200.岛屿数量

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

  • 200.岛屿数量

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

  • DFS——200 岛屿数量

    这道题和上一个题目思路差不多。唯一不同的是这个求的是数量,所以我们在DFS的方法里面不需要返回值,只需要记录发现一...

网友评论

    本文标题:力扣 200 岛屿数量

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