首页 > 其他分享 >200. 岛屿数量(中)

200. 岛屿数量(中)

时间:2024-03-25 20:55:19浏览次数:18  
标签:200 递归 res 岛屿 网格 dfs grid 数量

目录

题目

  • 给你一个由 '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

示例 2:

输入:grid = [
["1","1","0","0","0"],
["1","1","0","0","0"],
["0","0","1","0","0"],
["0","0","0","1","1"]
]
输出:3

题解:DFS

  • 遍历图中所有的位置,如果该位置为1,则向外扩展将与之相连的1全部变为0
class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        m = len(grid)#行数
        n = len(grid[0])#列数
        res = 0
        def dfs(x, y):
            if grid[x][y] == '1':#本身改为0
                grid[x][y] = '0'
            else:
                return
            #相连的1都改为0
            if x > 0:#左边递归
                dfs(x - 1, y)
            if x < m - 1:#右边递归
                dfs(x + 1, y)
            if y > 0:#上边递归
                dfs(x, y - 1)
            if y < n - 1:#下边递归
                dfs(x, y + 1)
        for i in range(m):
            for j in range(n):
                if grid[i][j] == '1':
                    dfs(i, j)
                    res += 1#岛屿数加1
        return res

标签:200,递归,res,岛屿,网格,dfs,grid,数量
From: https://www.cnblogs.com/lushuang55/p/18095318

相关文章

  • 并查集(反集)进阶 P1892 [BOI2003] 团伙
    现在有 n 个人,他们之间有两种关系:朋友和敌人。我们知道:一个人的朋友的朋友是朋友一个人的敌人的敌人是朋友现在要对这些人进行组团。两个人在一个团体内当且仅当这两个人是朋友。请求出这些人中最多可能有的团体数。输入格式第一行输入一个整数 n 代表人数。第二行......
  • 【C++】每日一题 452 用最少数量的箭引爆气球
    有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i]=[xstart,xend]表示水平直径在xstart和xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有......
  • INFO20003 电动汽车(EV)充电站
    INFO20003课业1第1页,共4页NFO200032024年第1学期课业1:ER建模到期时间:2024年3月28日星期四下午5:59提交:通过LMShttps://canvas.lms.unimelb.edu.au/电动汽车充电电动汽车(EV)充电站提供具有不同充电率和成本的充电设施电动汽车。充电站还可以与咖啡馆和餐厅。您的团队将帮助创建......
  • P1002 [NOIP2002 普及组] 过河卒(动态规划)
    #include<bits/stdc++.h>usingnamespacestd;longlongdp[30][30];boolm[30][30];intmain(){ intAx,Ay,Mx,My; cin>>Ax>>Ay>>Mx>>My; Ax+=2;Ay+=2;Mx+=2;My+=2; dp[2][1]=1; m[Mx][My]=1; m[Mx-2][My-1]......
  • C++ [NOIP2008 普及组] ISBN 号码
    文章目录一、题目描述[NOIP2008普及组]ISBN号码题目描述输入格式输出格式样例#1样例输入#1样例输出#1样例#2样例输入#2样例输出#2提示二、参考代码一、题目描述[NOIP2008普及组]ISBN号码题目描述每一本正式出版的图书都有一个ISBN号码与之对应,IS......
  • 2000-2022年上市公司客户、供应商集中度数据
    2000-2022年上市公司客户、供应商集中度数据1、时间:2000-2022年2、来源:上市公司年报3、指标:年份、股票代码、股票简称、行业代码、省份、城市、省份代码、城市代码、上市状态、前五名客户产生的营业收入_亿元、占全年营业收入的比例、前五名供应商产生的采购额_亿元、占全年......
  • 2002-2022年各地区出口技术复杂度数据(含原始数据+计算代码+结果)
    2002-2022年各地区出口技术复杂度数据(含原始数据+计算代码+结果)1、时间:2002-2022年2、来源:原始数据整理自国研网、海关总署、国家统计局3、范围:30省4、指标:进出口原始数据:时间、流向名称、商品编码、商品名称、伙伴编码、伙伴名称、主体编码、主体名称、方式编码、方式名......
  • 【数据分享】2008-2022年全国范围逐日NO2栅格数据
    空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000-2022年全国范围逐日的PM2.5栅格数据、2013-2022年全国范围逐日SO2栅格数据、2000-2022年全国范围逐日PM10栅格数据、2013-2022年全国范围逐日CO栅格数据和2000-2022年全国1km分辨率的逐日O3栅格数据(可查......
  • 如何在 1 到 2000 中计算出子集和能被 5 整除的子集有多少个?
    速通版。自信构造母函数:\[\begin{aligned}f(x)&=(1+x)(1+x^2)\cdots(1+x^{2000})\\&=c_0+c_1\timesx+c_2\timesx^2+\cdots\end{aligned}\]取五次单位根\(\zeta^0,\zeta^1,\cdots,\zeta^4\)。尝试计算\(\sum_{i=0}^4f(\zeta^i)\),......
  • P1055 [NOIP2008 普及组] ISBN 号码
    P1055[NOIP2008普及组]ISBN号码[NOIP2008普及组]ISBN号码题目描述每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括\(9\)位数字、\(1\)位识别码和\(3\)位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位是识别码,例如0-6......