LeetCode 200. Number of Islands

原创 2016年06月02日 09:50:34

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:

11110
11010
11000
00000

Answer: 1

Example 2:

11000
11000
00100
00011

Answer: 3



这是一道图论的题。我这儿采用dfs算法,将一个岛的元素全部标志为2,遍历整个map,遇到2和0就跳过,累计没有跳过的次数。

/**
 * Created by kyle on 2016/6/1.
 */
public class NumberOfIsland  {

    static  void dfs(char[][] map, int i ,int j){
        int m = map.length;
        int n = map[0].length;
        if(map[i][j] == '0'){
            return;
        }

        if(map[i][j] =='2'){
            return;
        }

        if(map[i][j] == '1'){
            map[i][j] = '2';
        }


        if(i+1 < m){
            dfs(map, i+1, j);
        }
        if(j+1 < n){
            dfs(map, i, j+1);
        }

        if(i-1 >=0){
            dfs(map, i-1, j);

        }

        if( j- 1 >= 0){
            dfs(map ,i, j-1);
        }

    }

    static  int numberOfIsland(char[][] grid){

        if(grid == null){
            return  0;
        }
        if(grid.length == 0 || grid[0].length == 0){
            return  0;
        }
        int m = grid.length;
        int n = grid[0].length;
        int count = 0;


        for( int i =0 ; i< m ; i++){
            for(int j = 0 ; j< n ; j++){
                if(grid[i][j] == '1'){
                    dfs(grid , i ,j );
                  //  show(grid);

                    count++;
                }
            }
        }
        return  count;
    }
    static  void show(char[][] islandMap){
        System.out.println("island map :");
        for(int i =0 ;i< islandMap.length ; i++){
            System.out.println(Arrays.toString(islandMap[i]));
        }
    }

    static  public  void main(String[] args){
        /*char[][] islandMap = {
                {'1','1','1','0','0'},
                {'1','1','0','1','0'},
                {'0','0','1','0','0'},
                {'0','0','0','1','1'},
        };*/

        char[][] islandMap = {
                {'1','1','1'},
                {'0','1','0'},
                {'1','1','1'}
        };

       // dfs(islandMap, 0, 0);
       // int number = numberOfIsland(new int[0][0]);
        int number = numberOfIsland(islandMap);
        for(int i =0 ;i< islandMap.length ; i++){
            System.out.println(Arrays.toString(islandMap[i]));
        }

        System.out.println(" number of island : "+ number);
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

leetcode 200 : Number of Islands

leetcode 200 : Number of Islands java c++ python
  • xudli
  • xudli
  • 2015年05月22日 07:40
  • 7351

Leetcode 200 Number of Islands 并查集

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is sur...
  • u012614906
  • u012614906
  • 2017年03月15日 20:47
  • 1198

200. Number of Islands Leetcode Python

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is sur...
  • hyperbolechi
  • hyperbolechi
  • 2015年04月15日 19:14
  • 1631

第三周:( LeetCode200 ) Number of Islands(c++)

原题:本题是经典的简单图论问题,求岛的个数也即求图上的连通区间的个数。可采用深搜或者广搜。假设共有n个点,时间复杂度为o(n)。本题笔者采用深搜的递归和非递归两种解法。将遍历过的“1”被改为“0”,其...
  • marlonlyh
  • marlonlyh
  • 2017年03月09日 19:25
  • 191

[leetcode] 305. Number of Islands II 解题报告

题目链接: https://leetcode.com/problems/number-of-islands-ii/ A 2d grid map of m rows and n columns i...
  • qq508618087
  • qq508618087
  • 2016年03月26日 06:50
  • 1960

(LeetCode 200)Number of Islands(并查集、DFS)

Q: Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is s...
  • u014616233
  • u014616233
  • 2016年04月20日 23:23
  • 1505

leetcode 200. Number of Islands-岛屿数量|并查集算法

原题链接:200. Number of Islands 【思路】 本题考查dfs和bfs的结合。由于题目没有限制不可改变原数组的结构,所以一旦遇到1,就将周边相邻的几个1置为2。遍历整个数组,遇到1的...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年03月18日 13:02
  • 1273

[leetcode] 200 Number of Islands(DFS)

非常基础的一道DFS深度优先搜索的题目,当我们遍历数组发现一个位置为'1'时,就是用dfs将其周围的1全部变为0,然后递归继续,这样所有连通成一片的'1'就是一个island,sum++,最后返回su...
  • NK_test
  • NK_test
  • 2015年10月12日 23:12
  • 2285

leetcode解题之200. Number of Islands Java版(岛屿的数量)

leetcode解题之200. Number of Islands Java版(岛屿的数量) ,深度优先遍历
  • mine_song
  • mine_song
  • 2017年04月05日 22:07
  • 882

200. Number of Islands(重要)

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surr...
  • gao1440156051
  • gao1440156051
  • 2016年08月11日 23:22
  • 401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode 200. Number of Islands
举报原因:
原因补充:

(最多只允许输入30个字)