博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 200. 岛屿数量
阅读量:4034 次
发布时间:2019-05-24

本文共 928 字,大约阅读时间需要 3 分钟。

题目描述

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

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

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

示例 1:

输入:grid = [

[“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”]
]
输出:1

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/number-of-islands
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

C++

class Solution {
public: /* 思路:遍历岛这个二维数组,如果当前数为1,则进a入感染函数并将岛个数+1 感染函数:其实就是一个递归标注的过程,它会将所有相连的1都标注成2。为什么要标注?这样就避免了遍历过 程中的重复计数的情况,一个岛所有的1都变成了2后,遍历的时候就不会重复遍历了 */ int numIslands(vector
>& grid) {
//深度优先遍历 int land_number=0; for(int i=0;i
> &grid,int i, int j){
if(i<0||i>=grid.size()||j<0|| j>=grid[0].size()||grid[i][j]=='0'){
return ; } grid[i][j]='0'; //避免重复计算,陷入循环 dfs(grid,i-1,j); //上 dfs(grid,i+1,j);//下 dfs(grid,i,j-1); //左 dfs(grid,i,j+1); //右 }};
你可能感兴趣的文章
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
opencv test code-1
查看>>
eclipse 导入先前存在的项目
查看>>
GNU hello代码分析
查看>>
Qt继电器控制板代码
查看>>
wpa_supplicant控制脚本
查看>>
rfkill: WLAN hard blocked
查看>>
gstreamer相关工具集合
查看>>
arm 自动升级脚本
查看>>
RS232 四入四出模块控制代码
查看>>
gstreamer插件之 videotestsrc
查看>>
autoupdate script
查看>>
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>