美文网首页
Leetcode in Java 200. Number of

Leetcode in Java 200. Number of

作者: 刺破羽毛 | 来源:发表于2019-02-17 21:43 被阅读0次

    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是连在一起的,是一个“岛”

    }

    相关文章

      网友评论

          本文标题:Leetcode in Java 200. Number of

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