47.Number of (number of islands) Islands

Level:

  Medium

Subject description:

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

Example 1:

Input:
11110
11010
11000
00000

Output: 1

Example 2:

Input:
11000
11000
00100
00011

Output: 3

Analysis of ideas:

To find the number of islands, if you encounter a 1, surrounded by 0, then as an island, as long as the horizontal or vertical adjacent 1 are considered an island, find a number of two-dimensional array in the island. I.e., the number of required non-adjacent array 1, Solutions, through the array, across a 1, all put around 1 are connected to a non-mark, so that the entire number of encountered during a traversal is the demand solution.

Code:

public class Solution{
    public int numIslands(char [][]grid){
        if(grid==null||grid.length==0)
            return 0;
        int res=0;
        for(int i=0;i<grid.length;i++){
            for(int j=0;j<grid[0].length;j++){
                if(grid[i][j]!='1')
                    continue;
                res++;
                dfs(grid,i,j);
            }
        }
        return res;
    }
    public void dfs(char [][]grid,int i,int j){
        if(i<0||i==grid.length||j<0||j==grid[0].length)
            return;
        if(grid[i][j]=='1'){
            grid[i][j]='0';
            dfs(grid,i+1,j);
            dfs(grid,i,j+1);
            dfs(grid,i-1,j);
            dfs(grid,i,j-1);
        }
    }
}

Guess you like

Origin www.cnblogs.com/yjxyy/p/11083762.html