岛屿的个数

原创 2016年05月31日 18:05:23

给一个01矩阵,求不同的岛屿的个数。0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。

样例

在矩阵:

[
  [1, 1, 0, 0, 0],
  [0, 1, 0, 0, 1],
  [0, 0, 0, 1, 1],
  [0, 0, 0, 0, 0],
  [0, 0, 0, 0, 1]
]

中有 3 个岛.【借鉴网上代码整理得】

public class Solution {
    /**
     * @param grid a boolean 2D matrix
     * @return an integer
     */
    public int numIslands(boolean[][] grid) {
        // Write your code here
        //不要忘记判断数组是否为空
        int row = grid.length;
        //因为直接给数组赋值{},并不是null所以不能用grid==null来判断是否为空
         if (row == 0 ){
            return 0;
        }
        //当为空数组时 col赋值会报错 数组越界
        int col = grid[0].length;
        int count = 0;
        /*或者设置一个数组 标记该位置是否判断过 节省时间
        boolean[][] visited = new boolean[row][col];
        for (int i = 0; i < row; i++){
            for (int j = 0; j < col; j++){
                visited[i][j] = false;
            }
        }*/
        //采用递归 深度搜索 搜索之后的位置重置为0
        
        for (int i = 0; i < row; i++){
            for (int j = 0; j < col; j++){
                if (grid[i][j]){
                    count += 1;
                    dfs(grid, i, j);
                }
            }
        }
        return count;
    }
    public void dfs(boolean[][] grid, int x, int y){
        if (x < 0 || y < 0 || x >= grid.length || y >= grid[0].length || !grid[x][y]){
            return ;
        }
       // if (visited[x][y]){
        //    return ;
       // }
       grid[x][y] = false;//访问过得位置置为0 节省时间 
       dfs(grid, x - 1, y);
       dfs(grid, x + 1, y);
       dfs(grid, x, y - 1);
       dfs(grid, x, y + 1);
    }
}

[LintCode 433] 岛屿的个数(Python)

题目描述 给一个01矩阵,求不同的岛屿的个数。 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。 样例 在矩阵: [ ...
  • yurenguowang
  • yurenguowang
  • 2017年08月22日 17:53
  • 203

LintCode 433. 岛屿的个数

思路: 遍历每一个位置,若当前位置为土地(值为1),对其进行深搜,深搜同时将此位置的值置为0. 代码: class Solution { public: /** * @...
  • github_34248245
  • github_34248245
  • 2016年03月15日 17:29
  • 668

给出01数组计算出符合岛屿规则的个数 [牛客网-滴滴出行2017春招算法工程师笔试题B卷 ]

c语言算法题-给出01数组计算出符合岛屿规则的个数 [牛客网-滴滴出行2017春招算法工程师笔试题B卷 ] 题目和这个网站描述的意思一致:http://www.th7.cn/Program/cp/20...
  • rock4you
  • rock4you
  • 2017年05月07日 21:12
  • 773

岛屿的个数(LintCode)

题目来源:LintCode 原题地址:http://www.lintcode.com/zh-cn/problem/number-of-islands/ 题目: 给一个01矩阵...
  • lyy_hit
  • lyy_hit
  • 2015年10月25日 18:51
  • 537

Lintcode解题笔记 - 岛屿的个数

原文链接: http://www.lintcode.com/zh-cn/problem/number-of-islands/给一个01矩阵,求不同的岛屿的个数。0代表海,1代表岛,如果两个1相邻,那么...
  • xiewenjiang110
  • xiewenjiang110
  • 2015年07月08日 21:08
  • 1430

lintcode python代码 433岛屿个数

给一个01矩阵,求不同的岛屿的个数。0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻思路: 遇到1时 搜索1的上下左右是否有1 有的话,将1置0。(搜素不要超...
  • u013174482
  • u013174482
  • 2017年06月15日 11:28
  • 270

华为OJ-岛屿个数问题

题目:岛屿的个数 给一个01矩阵,求不同的岛屿的个数。 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。 样例 在矩阵: [ [1, 1,...
  • Hadas_Wang
  • Hadas_Wang
  • 2016年09月09日 00:15
  • 932

LintCode 岛屿的个数

算法 lintcode 岛屿
  • u012762106
  • u012762106
  • 2015年08月22日 23:06
  • 1984

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

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

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

leetcode解题之200. Number of Islands Java版(岛屿的数量) ,深度优先遍历
  • mine_song
  • mine_song
  • 2017年04月05日 22:07
  • 888
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:岛屿的个数
举报原因:
原因补充:

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