Leetcode200. 岛屿数量(JAVAdfs)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode200. 岛屿数量(JAVAdfs)相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/number-of-islands/

解题思路

我们遍历每个点,以每个点为中心,向上下左右四个方向扩展,如果到边界,或者当前位置不等于1时就返回。我们把所有遍历过的点都会置为0,表示已经遍历过。

代码

class Solution {
    public int numIslands(char[][] grid) {
        int ans = 0;
        for(int i = 0; i < grid.length; i++)    //遍历二维数组每个点
            for(int j = 0; j < grid[0].length; j++)
                if(dfs(grid, i, j)) //如果当前点为1返回true
                    ans++;
        return ans;
    }
    boolean dfs(char[][] grid, int i, int j) {
        if(i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] != '1')  //出边界或者当前位置不为1则返回
            return false;
        grid[i][j] = '0';   //遍历过的点置为0
        dfs(grid, i + 1, j);    //遍历左边
        dfs(grid, i - 1, j);    //遍历右边
        dfs(grid, i, j + 1);    //遍历上面
        dfs(grid, i, j - 1);    //遍历下面
        return true;
    }
}

复杂度分析

  • 时间复杂度: O ( n ∗ m ) O(n * m) O(nm)
  • 空间复杂度: O ( n ∗ m ) O(n * m) O(nm)

以上是关于Leetcode200. 岛屿数量(JAVAdfs)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode200.岛屿数量

leetcode岛屿数量(200)-BFS-带详解

LeetCode 200.岛屿数量

LeetCode 200. 岛屿数量

leetcode200. 岛屿数量——深度优先搜索

LeetCode 图解 | 200 .岛屿数量