200. 岛屿数量

package leetcode;

public class demo_200 {
    public int numIslands(char[][] grid) {
        int height=grid.length;
        int width=grid[0].length;
        int sum=0;
        //记录当前值是否被访问过
        int[][] visited=new int[height][width];
        for(int i=0;i<height;i++) {
            for(int j=0;j<width;j++) {
                //当前值未被访问,且为1的情况下,总数加一
                if(visited[i][j]==0&&grid[i][j]=='1') {
                    backtrace(visited, i, j, grid, height, width);
                    sum=sum+1;
                }
            }
        }
        return sum;
    }
    public void backtrace(int[][] visited,int i,int j,char[][] grid,int height,int width) {
        //已经被访问过,或者路不通,则返回
        if(visited[i][j]==1||grid[i][j]=='0') {
            return ;
        }
        //标记已经被访问了
        visited[i][j]=1;
        //向左查找
        if(i-1>=0) {
            backtrace(visited, i-1, j, grid, height, width);
        }
        //向右查找
        if(i+1<height) {
            backtrace(visited, i+1, j, grid, height, width);
        }
        //向上查找
        if(j-1>=0) {
            backtrace(visited, i, j-1, grid, height, width);
        }
        //向下查找
        if(j+1<width) {
            backtrace(visited, i, j+1, grid, height, width);
        }
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_200 demo=new demo_200();
        char[][] grid= {
                {'1','1','0','0','0'},
                {'1','1','0','0','0'},
                {'0','0','1','0','0'},
                {'0','0','0','1','1'},
        };
        demo.numIslands(grid);
    }

}

 

posted on 2022-04-14 10:45  一仟零一夜丶  阅读(33)  评论(0)    收藏  举报