【广度优先搜索-中等】1905. 统计子岛屿

广度优先算法算法BFS的原理及C++实现 本文详细介绍了广度优先搜索(BFS)算法的原理、实现和应用。BFS是一种基于队列的图遍历算法,其核心思想是按层次遍历节点,适用于求解无权图的最短路径问题。文章阐述了BFS的状态转移过程、时间复杂度分析(O(n)或O(m)),并提供了多种实现方式(包括常规队列、滚动队列优化等)。典型应用场景包括游戏地图寻路、网络拓扑分析等。文中还给出了C++实现代码、测试用例和性能优化技巧,并附有相关算法题目分类和难度分级。最后提供了作者的教学视频和算法资料下载链接。 阅读详情

【题目】

在这里插入图片描述
在这里插入图片描述【分析】
使用DFS遍历 grid2,并检查岛屿的所有格子是否在 grid1 中也是 1

【代码】
在这里插入图片描述

class Solution:
    def countSubIslands(self, grid1: List[List[int]], grid2: List[List[int]]) -> int:
        cnt=0        
        def dfs(x,y):
            if x>=0 and x<len(grid2) and y>=0 and y<len(grid2[0]) and grid2[x][y]==1:
                grid2[x][y]=0
                return grid1[x][y] & dfs(x-1,y) & dfs(x+1,y) & dfs(x,y-1) & dfs(x,y+1)
            return True
        for i in range(len(grid2)):
            for j in range(len(grid2[0])):
                if grid2[i][j]==1:
                    cnt+=dfs(i,j)
        return cnt
控制障碍函数(Control Barrier Function,CBF) 二、示例 使用一个经典简单的示例讲解CBF的推导 阅读详情

相关推荐

基因树构建全流程:从OrthoFinder到iTOL的保姆级教程(附兰科植物案例)

本文提供了一份从OrthoFinder到iTOL的基因树构建全流程保姆级教程。详细解析了利用OrthoFinder构建物种树、IQ-TREE构建无根基因树、Notung进行树调和生根,以及最终在iTOL中实现专业可视化的每一步操作与实战经验,并以兰科植物NB-ARC基因家族为例进行演示,帮助研究者系统掌握基因树分析方法。

tequila的博客 524

Leetcode1905. 统计子岛屿(medium)

Leetcode1905. 统计子岛屿(medium),Python题解,广度优先搜索,图论基础题

chenxy_bwave的专栏 555

激光条纹中心提取——Steger

激光条纹中心提取-Steger 好久没有记录了,记录一下今天学习的内容,据说Steger在激光条纹中心提取上神一般的存在。文章和代码都分享给大家了哈,其中有四个文件,3个C++,一个python,python一个抠图文件,3个c++包含背景图+原图, 单张图提取, 多张图提取。 分享代码 #include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> #i

CharmsLUO的博客 5383

【LeetCode】1905-统计子岛屿

给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只包含 0 (表示水域)和 1 (表示陆地)。一个 岛屿 是由 四个方向 (水平或者竖直)上相邻的 1 组成的区域。任何矩阵以外的区域都视为水域。如果 grid2 的一个岛屿,被 grid1 的一个岛屿 完全 包含,也就是说 grid2 中该岛屿的每一个格子都被 grid1 中同一个岛屿完全包含,那么我们称 grid2 中的这个岛屿为 子岛屿 。请你返回 grid2 中 子岛屿 的 数目 。...

qq_45972928的博客 160

揭秘《出塞》UE5+AIGC高效工作流 | 从创意到成片全流程解析

李季老师(老李头儿)在第四届瑞云大赛斩获季军的作品《出塞》的完整创作流程!

UWA—简单优化,优化简单! 767

发那科 Fanuc PLC 报文通讯,报文解析。附源程序

发那科 Fanuc PLC 报文通讯,最详细的发那科 PLC报文解析,不再局限在官方提供的库,也不用再局限在windows平台。

ITOfDragon的博客 1749

【LeetCode 深度优先搜索专项】统计子岛屿(1905)

【LeetCode 深度优先搜索专项】统计子岛屿(1905)

weixin_37780776的博客 405

白话FOC控制中各环节的参数的意义与如何设置参数

FOC参数整定是控制系统的关键环节,如同驯马需要调节"智能马鞍"。核心参数分为三类:电流环参数(P/I/D)决定响应速度和稳定性,速度环参数需慢于电流环5-10倍带宽,系统参数(极对数、电阻等)是电机固有属性必须准确设置。调参心法:由内而外先调电流环,遵循先P后I慎用D原则,内环带宽必须大于外环。利用自动辨识工具,通过听觉(滋滋声表示P过大)和波形观察来微调,最终实现精准控制。

汽车软件开发 357

1905. 统计子岛屿

我的做法是先在grid2上面搜索,每遇到一个连通图就遍历这个图,每个被遍历的节点都找一个grid1是否存在,不存在就return false。

qigezuishuaide的博客 96

控制科学与工程(自动化)保研经验【4】——浙大篇

控制科学与工程(自动化)保研经验【4】——浙大篇

Control Everything 1万+

科研级YOLOv8 Neck革新:HS-FPN模块赋能,让特征融合更高效且参数量直降100W的实战指南

在文件夹下新建HS_FPN.py,将上述和HS_FPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

FJN110的博客 153

DFS 算法秒杀五道岛屿问题

读完本文,可以去力扣解决如下题目:200.岛屿数量(中等)1254.统计封闭岛屿的数目(中等)1020.飞地的数量(中等)1905.统计子岛屿(中等)694.不同的岛屿数量(中等)岛屿问题...

fdl123456的博客 623

Matlab并行运算

今天搞了一下matlab的并行计算,效果好的出乎我的意料。 本来CPU就是双核,不过以前一直注重算法,没注意并行计算的问题。今天为了在8核的dell服务器上跑程序才专门看了一下。本身写的程序就很容易实现并行化,因为beamline之间并没有考虑相互作用。等于可以拆成n个线程并行,要是有550核的话,估计1ms就算完了。。。 先转下网上找到的资料。 一、Matlab并行计算原理梗概 Matl

wenyusuran的专栏 1万+

Leetcode 1905. Count Sub Islands

文章作者:Tyan 博客:noahsnail.com  |  优快云  |  简书 1. Description 2. Solution **解析:**Version 1,以第二个矩阵中碰到的1作为起点,然后使用广度优先搜索找到所有相邻的1,即一个岛屿,并将所有岛的坐标保存到队列中(值为1的坐标),将矩阵二中搜索的点对应的值设为2,防止重复搜索,搜索过程中需要同时检查搜索的点是否是矩阵一种的岛屿,如果不是,将标志位设为False,最后根据标志位判断是否是矩阵一种的

SnailTyan 368

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

岛屿类问题解法及思路

讲解算法中关于岛屿知识点,带你理解和掌握啥是岛屿问题及其拓展!!

努力成为更好的自己~~~ 578

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

社招面试题目【算法模板(1),Python基础语言教程

判断这个数是否小于两个节,小于就返回其有多少个就返回多少个。#统计1到n-1的每一个节点。#用for循环把每个相连的节点放入里面,构建出我们想要的图。

2401_83947353的博客 933

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LeetCode岛屿问题:DFS、BFS与并查集算法详解

连通区域分析是图论中的基础概念,通过检测相邻元素的连通性来解决实际问题。其核心原理包括深度优先搜索(DFS)、广度优先搜索(BFS)和并查集(Union-Find)三种经典算法,分别采用递归栈、队列和树结构实现连通性判断。这些算法在图像处理、社交网络分析等领域具有重要技术价值,能高效解决岛屿计数、物体识别等场景问题。以LeetCode 200题为例,DFS通过标记访问节点避免重复计算,BFS采用层级遍历优化空间复杂度,而并查集则擅长处理动态连通性问题。掌握这些算法的实现差异和性能特点,对面试算法题和工程实践

csxc65837的博客 412

LeetCode 题解随笔:图论(二)(DFS与BFS)

LeetCode 题解随笔:图论 刷题顺序参考:代码随想录

weixin_44114160的博客 621

【算法模板】BFS秒杀模板,2024年最新Python面试基础

判断这个数是否小于两个节,小于就返回其有多少个就返回多少个。#统计1到n-1的每一个节点。#用for循环把每个相连的节点放入里面,构建出我们想要的图。#用一个数组对每个节点的入度进行统计#先把入度为一的节点放入队列中,也就是上图中最外面的那些节点。res = None#使用队列进行循环#进行多源BFS#出队并且对每一层的节点放入到res数组中#对每个节点的子节点进行循环判断#因为我们是先删除最外面的节点,但是随着外面的节点被删除,则和外面连接的节点的入度也会随着减一。

2301_82242273的博客 1268

网格(Grid)

网格(Grid)

yake1965 487

普通二本的辛酸Python面试之路,【算法模板,被阿里面试官征服了

思路:本题就是一个多源的扩散问题,按照上图我们可以让四个陆地都进行一个,则需要几次同时扩撒本题的结果就是多少!代码:class Solution:def maxDistance(self, grid: List[List[int]]) -> int:#检查边缘def check(i,j,m,n):if i >= 0 and j >= 0 and i < m and j < n:return Trueelse:return Falsen = len(grid)#上下四周的方向d = [(1,0),(-1,0)

2401_83621541的博客 699

算法刷题总结 (二) 回溯与深广搜与并查集算法

回溯与深广搜有相似的做法和理解,所以把他们放在同一个文章之中,文章看似篇幅很长,实际上,题目都是相似的,顺着章节来可以很快的掌握这个算法内容,以后碰到这样的相似题目,会很快想出思路。 回溯是递归的纵横拓展,主要是递归(纵)+局部暴力枚举(横)。所以可以从递归和暴力两个方面来拆解回溯问题。

UK - UofL HW - SDE 1784

算法学习(十六)递归回溯

1> 使用哈希表存储答案,使用mark标记已访问的防止重复搜索,状态较少(<32)时用一个int即可题目说明实现464. 我能赢吗使用int记录已选数字我的提交1387. 将整数按权重排序使用int记录已计算过的我的提交1361. 验证二叉树记录每个节点为根时其下的节点数目,直到等于n我的提交2745. 构造最长的新字符串只要知道每个串剩余数量和前一个串类型,就能唯一确定最大长度,故采用状态压缩dfs我的提交2> 岛屿问题:曼哈顿距离,广度优先搜索,某一性质(边界)扩散,通过更改标记防止重复搜索题目。

qq_42767993的博客 1001

Leetcode 子序列

402. 移掉 K 位数字 1218. 最长定差子序列

yake1965 823

动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100

将一个复杂问题拆分成多个规模更小的子问题,通过保存子问题的计算结果,避免重复计算,最终得到原问题的答案。先看一个经典问题。dp[i] = 以第 i 个元素结尾的最优结果例如最长递增子序列。最长递增子序列不一定以最后一个元素结尾,因此必须遍历整个数组取最大值。dp[i] = 前 i 个元素的最优结果这种情况下,最终答案通常就是dp[n]。关键在于理解 dp 数组的定义。动态规划的核心并不是背诵某个固定模板,而是建立正确的状态定义,并通过状态转移方程解决问题。dp[i] 或 dp[i][j] 表示什么?

zengjiajun2006的博客 888

力扣73 矩阵置零

该解法通过标记含0的行和列来实现矩阵置零。遍历矩阵,用布尔数组记录有0的行和列;再遍历一次,若当前行或列被标记,则置为0。时间复杂度O(mn),空间复杂度O(m+n)。

Pniubi的博客 34
上一篇: 【广度优先搜索-中等】1905. 统计子岛屿
下一篇: 【广度优先搜索-中等】841. 钥匙和房间
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值