Leetcode in Java 200. Number of Islands

class Solution {

    private int m;

    private int n;

    public int numIslands(char[][] grid) {

        int res = 0;

        m = grid.length;

        if(m == 0)

            return 0;

        n = grid[0].length;

        for(int i = 0;i < m;i++){

            for(int j = 0;j < n;j++){

                if(grid[i][j] == '1'){//找到 i,j 为1的时候就算一个岛

                    dfs(grid,i,j);//进行一个深度优先遍历,最后会把属于这个点的一个“岛”遍历完毕

                    res++;//深度遍历一个岛,result就+1,所有的位置都变成0时,result也就有了最后的结果

                }

            }//两个 for 循环用来遍历已有的矩阵

        }

        return res;

    }

    private void dfs(char[][] grid,int i,int j){

        if(i<0||j<0||i>=m||j>=n||grid[i][j] == '0')

            return;//如果是上边和左边就超越了边界条件,直接 return

        grid[i][j] ='0';//找过的地方变成 0

        dfs(grid,i,j+1);

        dfs(grid,i,j-1);

        dfs(grid,i+1,j);

        dfs(grid,i-1,j);//上下左右四个方向的遍历

    }//找过的地方都会变成 0,证明几个1是连在一起的,是一个“岛”

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,736评论 0 3
  • <center>#1 Two Sum</center> link Description:Given an arr...
    铛铛铛clark阅读 2,253评论 0 3
  • 分治方法 将问题划分成互不相交的子问题 递归地求解子问题 将子问题的解组合起来 动态规划(两个要素:最优子结构、子...
    superlj666阅读 540评论 0 0
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,362评论 0 9
  • 独立桥头爱晚晴, 细柳拂面野莺飞; 可怜芳华胭脂落, 几度红尘几度春。 乙未春
    须弥沙阅读 306评论 0 3