给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

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

输入:
11000
11000
00100
00011
输出: 3
解释: 每座岛屿只能由水平和/或竖直方向上相邻的陆地连接而成。

 思路:这道题类似于图像处理领域找二值图像四邻域连通数,体现的是广度优先的思想,具体的,遍历每个数,如果当前数为1,那么以此展开去找上下左右为1的值,并把这些搜索到的值都变为0,这样遍历的时候就不再遍历这些点,因为这些点已经属于某一个岛屿了,BFS注意返回条件。

class Solution {
public:int numIslands(vector<vector<char>>& grid) {if(grid.empty())return 0;int rows = grid.size();int cols = grid[0].size();int counts = 0;for(int i=0;i<rows;++i){for(int j=0;j<cols;++j){if(grid[i][j]=='1'){BFS(grid,i,j,rows,cols);counts++;}   }}return counts;}void BFS(vector<vector<char>>& grid,int i,int j,int rows,int cols){if(i<0 || i>=rows || j<0 || j>=cols || \grid[i][j]=='0')return;grid[i][j] = '0';BFS(grid,i-1,j,rows,cols);BFS(grid,i+1,j,rows,cols);BFS(grid,i,j-1,rows,cols);BFS(grid,i,j+1,rows,cols);}
};

岛屿数量—leetcode200相关推荐

  1. [JS]题解 | #岛屿数量#

    题解 | #岛屿数量# 题目链接 岛屿数量 题目描述 时间限制:1秒 空间限制:256M 描述 给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右 ...

  2. Leetcode 200. 岛屿数量 解题思路及C++实现

    解题思路: 典型的深度优先搜索问题,跟第130题 被围绕的区域 有点像,只不过这里不仅要找出被水包围的岛屿,还要计算这些岛屿的总数. 使用深度优先搜索的方法,大循环是遍历整个grid数组(两个for循 ...

  3. 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量

    本文讲解200. 岛屿数量问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 1 题目 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围, ...

  4. 牛客题霸 [ 岛屿数量] C++题解/答案

    牛客题霸 [ 岛屿数量] C++题解/答案 题目描述 给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 岛屿: 相邻陆地可以组成一个岛屿 ...

  5. [Leedcode][JAVA][第200题][岛屿数量][DFS][BFS][并查集]

    [问题描述] 第200题 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量.岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成 ...

  6. 广度优先搜索——岛屿数量(Leetcode 200)

    题目选自Leetcode 200. 岛屿数量 经典的搜索题,求岛屿数量 这里我用的是广度优先搜索BFS 最朴素的方法, 虽然效率不高,但是简单易懂 主要的问题在于:如何确定有多少个岛屿? 每次对一个& ...

  7. Leetcode 200.岛屿数量

    Time: 20190902 Type: Medium 题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地 ...

  8. 刷题笔记 | 朋友圈、岛屿的最大面积、岛屿数量

    1. 朋友圈 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有 ...

  9. 岛屿数量vs最大正方形

    岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网 ...

最新文章

  1. 超越英伟达的,不会是另一款GPU?这家深圳公司发布全球首款数据流AI芯片
  2. IE问题解决方法汇总
  3. win10兼容模式怎么设置_win10护眼模式关不掉怎么办
  4. 职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
  5. cli版的php.ini路径,CLI 执行 PHP 时自订 php.ini 设定档
  6. Day10 sambaNFS(Enginner04)
  7. vsCode 快捷键、插件
  8. Java反射机制是否会影响性能
  9. 如何用html制作一个简单的网页
  10. 模拟qq邮箱mysql数据库_后台管理系统3.0(SrpingBoot+MySQL)界面仿QQ邮箱源代码
  11. rk3399 android 9.0 skype强制切换到前置摄像头
  12. k8s出现问题导致cpu使用率过高
  13. SE 例题recap
  14. 一些动网美化方法集合【蓝雨动力整理】
  15. python3计算md5_python 计算文件的md5值实例
  16. MOOC(massive open online courses)
  17. python列表插入_python列表插入append(), extend(), insert()用法详解
  18. 经纬财富:吴忠白银投资五种方式
  19. B-spline三次B样条曲线方程
  20. [附源码]SSM计算机毕业设计网上鞋店管理系统JAVA

热门文章

  1. android系统中sd卡各文件夹功能详解 guessword,AndroidStudio LiveTemplate函数说明
  2. 一种业界通用的响应式布局解决方法
  3. Shell-11--for
  4. JDK1.10+scala环境的搭建之linux环境(centos6.9)
  5. php$_GET 变量
  6. 13 KNN背景分割器
  7. ubuntu14.04禁用自动待机保持屏幕亮度
  8. (四)C语言柔性数组、指针赋值
  9. SRM 591 div1 275
  10. Request header field Content-Type is not allowed by Access-Control-Allow-Headers跨域