岛屿数量—leetcode200
给你一个由 '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相关推荐
- [JS]题解 | #岛屿数量#
题解 | #岛屿数量# 题目链接 岛屿数量 题目描述 时间限制:1秒 空间限制:256M 描述 给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右 ...
- Leetcode 200. 岛屿数量 解题思路及C++实现
解题思路: 典型的深度优先搜索问题,跟第130题 被围绕的区域 有点像,只不过这里不仅要找出被水包围的岛屿,还要计算这些岛屿的总数. 使用深度优先搜索的方法,大循环是遍历整个grid数组(两个for循 ...
- 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量
本文讲解200. 岛屿数量问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 1 题目 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围, ...
- 牛客题霸 [ 岛屿数量] C++题解/答案
牛客题霸 [ 岛屿数量] C++题解/答案 题目描述 给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 岛屿: 相邻陆地可以组成一个岛屿 ...
- [Leedcode][JAVA][第200题][岛屿数量][DFS][BFS][并查集]
[问题描述] 第200题 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量.岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成 ...
- 广度优先搜索——岛屿数量(Leetcode 200)
题目选自Leetcode 200. 岛屿数量 经典的搜索题,求岛屿数量 这里我用的是广度优先搜索BFS 最朴素的方法, 虽然效率不高,但是简单易懂 主要的问题在于:如何确定有多少个岛屿? 每次对一个& ...
- Leetcode 200.岛屿数量
Time: 20190902 Type: Medium 题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地 ...
- 刷题笔记 | 朋友圈、岛屿的最大面积、岛屿数量
1. 朋友圈 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有 ...
- 岛屿数量vs最大正方形
岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网 ...
最新文章
- 超越英伟达的,不会是另一款GPU?这家深圳公司发布全球首款数据流AI芯片
- IE问题解决方法汇总
- win10兼容模式怎么设置_win10护眼模式关不掉怎么办
- 职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
- cli版的php.ini路径,CLI 执行 PHP 时自订 php.ini 设定档
- Day10 sambaNFS(Enginner04)
- vsCode 快捷键、插件
- Java反射机制是否会影响性能
- 如何用html制作一个简单的网页
- 模拟qq邮箱mysql数据库_后台管理系统3.0(SrpingBoot+MySQL)界面仿QQ邮箱源代码
- rk3399 android 9.0 skype强制切换到前置摄像头
- k8s出现问题导致cpu使用率过高
- SE 例题recap
- 一些动网美化方法集合【蓝雨动力整理】
- python3计算md5_python 计算文件的md5值实例
- MOOC(massive open online courses)
- python列表插入_python列表插入append(), extend(), insert()用法详解
- 经纬财富:吴忠白银投资五种方式
- B-spline三次B样条曲线方程
- [附源码]SSM计算机毕业设计网上鞋店管理系统JAVA
热门文章
- android系统中sd卡各文件夹功能详解 guessword,AndroidStudio LiveTemplate函数说明
- 一种业界通用的响应式布局解决方法
- Shell-11--for
- JDK1.10+scala环境的搭建之linux环境(centos6.9)
- php$_GET 变量
- 13 KNN背景分割器
- ubuntu14.04禁用自动待机保持屏幕亮度
- (四)C语言柔性数组、指针赋值
- SRM 591 div1 275
- Request header field Content-Type is not allowed by Access-Control-Allow-Headers跨域