leetcode200岛屿的数量

题目

给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:
输入:
11110
11010
11000
00000
输出: 1

示例 2:
输入:
11000
11000
00100
00011
输出: 3

代码和分析

class Solution {
public:
    int n,m;
    int numIslands(vector<vector<char>>& grid) {
        n = grid.size();
        if(n==0)
            return 0;
        int num = 0;
        m=grid[0].size();
        //遍历,找到每一个1
        for(int i = 0;i<n;i++){
            for(int j = 0;j<m;j++){
                if(grid[i][j] == '1'){
                    travel(grid,i,j);
                    num++;
                }
            }
        }
        return num;
    }
    /**
    * 遍历跟此陆地有关联的地,并把值改成0
    **/
    void travel(vector<vector<char>>& grid,int x,int y){
        if(grid[x][y] == '0')
            return;
        grid[x][y] = '0';
        //左边寻找
        if(x>0)
            travel(grid,x-1,y);
        //上边
        if(y>0)
            travel(grid,x,y-1);
        //右边
        if(x<n-1)
            travel(grid,x+1,y);
        //下边
        if(y<m-1)
            travel(grid,x,y+1);
        //grid[x][y] = 1;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目 难度:★★☆☆☆类型:矩阵 给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。 网...
    玖月晴阅读 1,042评论 0 0
  • 简述 极客时间算法40讲中所出现的leetcode算法题 题目 【链表】reverse-linked-list(反...
    BestbpF阅读 4,619评论 0 4
  • 题目链接难度:中等 类型: 深度优先搜索 给定一个由 '1'(陆地)和 '0'(水)组成的的二维...
    wzNote阅读 1,856评论 0 2
  • 现在想起来,我不得不承认,数学差这个问题,真的是个大问题! 我数学能差到什么程度呢?我生动地说明一下,我高考数学三...
    咦嗷同学阅读 666评论 0 1
  • 也许在某个清晨,我不会再听见城市的喧嚣。我曾梦想会看到花开,只是花开的时候我已不在。 我用忧郁的心情書写忧郁的文字...
    Man唐朝阅读 995评论 0 1

友情链接更多精彩内容