【广度优先搜索-中等】1020. 飞地的数量

【C++BFS】1020. 飞地的数量 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。 阅读详情

【题目】
在这里插入图片描述在这里插入图片描述【分析】
这题的本质就是求统计封闭岛屿的数目
1254. 统计封闭岛屿的数目
这两题的代码可以通用,就是稍微修改了一点细节
本题是求被0包围的1的个数
统计封闭岛屿的数目是求被1包围的0的区域个数不要求求0的个数,而求有多少个被包围的区域,所以代码只要小小的改动即可使用在本题中。如果是第一次接触此类题,可以先做统计封闭岛屿的数目这题,然后再进阶到本题,这样会更好接受
【代码】
在这里插入图片描述

class Solution:
    def numEnclaves(self, grid: List[List[int]]) -> int:
        visited=[[0 for i in range(len(grid[0]))] for i in range(len(grid))]
        cnt=0
        def dfs(x,y):
            if x>=0 and x<len(grid) and y>=0 and y<len(grid[0]) and grid[x][y]==1 and visited[x][y]==0:
                if x==0 or x==(len(grid)-1) or y==0 or y==(len(grid[0])-1):
                    return False
                visited[x][y]=1
                ans1=dfs(x-1,y)
                ans2=dfs(x+1,y)
                ans3=dfs(x,y+1)
                ans4=dfs(x,y-1)
                if ans1 and ans2 and ans3 and ans4:
                    self.tmp+=1
                return True and ans1 and ans2 and ans3 and ans4
            if x>=0 and x<len(grid) and y>=0 and y<len(grid[0]):
                return True
            return False
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j]==1 and visited[i][j]==0:
                    self.tmp=0
                    res=dfs(i,j)
                    if res:
                        cnt+=self.tmp
        return cnt
手把手教你五种方案配置Obsidian免费同步,全平台通用(支持Alist/OpenList) Obsidian是一款优秀的Markdown笔记工具,但官方同步服务每年近700元让人望而却步💸 本文整理了5种免费同步方案,涵盖苹果生态专属方案、多网盘插件同步、版本管理同步、点对点同步、自建实时同步等不同场景📱💻 每种方案都附有详细配置步骤,助你找到最适合的同步方式✨ 阅读详情

相关推荐

智能车竞赛环岛处理全解析:从图像识别到状态机控制

在嵌入式系统与自动控制领域,状态机是管理复杂系统行为、实现清晰逻辑流的核心设计模式。其原理在于定义一组有限的状态,以及触发状态迁移的事件和条件,从而将连续、模糊的过程分解为离散、确定的阶段。这种技术在机器人导航、工业自动化等场景中价值显著,尤其适用于需要应对多种场景、做出序列化决策的场合。在智能车竞赛中,赛道元素识别与路径跟踪是典型应用,其中环岛作为连续闭环的复杂场景,对系统的鲁棒性和决策连贯性提出了更高要求。通过图像处理提取赛道边线、宽度和曲率等特征,结合陀螺仪等传感器数据,可以构建一个专门处理环岛的状态

weixin_34033624的博客 566

1020. 飞地的数量

package leetcode板块;public class _1020飞地的数量_dfs_定义方向 {//减少递归函数中,额外的参数调用/*** @return*///----------先处理四个边界---------------------------i < rows;j++){//--------对中间值逐个去dfs,寻找满足条件的飞地enclaves---------i

Wzideng@qq.com 590

Zemax新手别慌!一文搞懂几何像差:从球差、慧差到色差的实战识别与优化

本文为Zemax新手提供几何像差实战指南,详细解析球差、彗差和色差的识别与优化方法。通过软件操作关键节点和实际项目决策逻辑,帮助光学设计师快速掌握像差诊断与优化技巧,提升光学设计效率。

weixin_42524708的博客 262

LeetCode1020. 飞地的数量

LeetCode1020. 飞地的数量

Love Peace 1170

在VSCode中使用LaTex+(grammarly语法检测,chatgpt翻译,Sumatra PDF 轻量级pdf阅读器)

整个文章分为以下几个内容,打 * 的是必须要安装的。

u011895157的博客 2万+

创客学院嵌入式驱动开发——学习资料汇总

1.创客学院知识巩固-01C语言回顾_C/C++_Set_Mode的博客-优快云博客https://blog.csdn.net/Set_Mode/article/details/94431050 2.创客学院知识巩固-02数据结构_Set_Mode的博客-优快云博客https://blog.csdn.net/Set_Mode/article/details/94431087 3.创客学院知...

snaking616 5118

【leetcode】1020. 飞地的数量

题目: 飞地的数量 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。 示例 1: 输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]] 输出:3 解释:有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。 示例

746

实战指南!基于STM32的智能环境监测系统(附完整代码+硬件设计+云端对接)

本文提供了一份基于STM32的智能环境监测系统完整实战指南。详细讲解了从硬件选型、电路设计、传感器驱动到数据采集、本地报警逻辑,以及通过ESP8266模块对接OneNET物联网平台实现数据上云的全过程。项目涵盖嵌入式开发与物联网应用核心技能,并提供了多种手机端数据展示方案,非常适合课程设计或毕业设计参考。

weixin_29193359的博客 355

搜索题目:飞地的数量

从边界上的陆地单元格开始遍历所有可以到达的陆地单元格,遍历结束之后,所有与边界相连的陆地单元格的状态都是已访问,其余单元格的状态都是未访问。从边界上的陆地单元格开始遍历所有可以到达的陆地单元格,遍历结束之后,所有与边界相连的陆地单元格的状态都是已访问,其余单元格的状态都是未访问。初始化之后,遍历每个单元格,如果一个单元格是陆地单元格且其上边或左边的相邻单元格是陆地单元格,则将两个相邻陆地单元格所在的集合做合并,同时将合并后的状态更新为与边界连通。记录每个单元格是否被访问过的二维数组和递归调用栈需要。

stormsunshine的博客 386

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

执行手眼校准有助于操作配备末端执行器(简称 “手”)的机械臂,该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准,机械臂就能准确地移动到摄像头识别的特定像素位置。这种能力是执行精确拾放任务(如分类、堆垛和分拣)的基础,即使在摄像机的确切位置和方向未知的情况下也是如此。机器人-摄像机系统有两种构型:眼在手内和眼在手外。在眼在手内构型中,摄像头直接安装在机器人手臂的末端执行器上。相反,在眼在手的构型中,摄像头固定在一个静止的物体上,机器人手臂在其视野内。

机器人控制与仿真应用 3355

Virtuoso 中的tech file 详细说明

工艺文件(Techfile)是集成电路设计中的核心配置文件,定义了从晶圆制造到版图验证全流程所需的工艺规则和图层属性。在Cadence Virtuoso平台中,Techfile作为连接设计与制造的桥梁,主要包含以下内容: 图层体系定义 金属层、介质层、多晶硅层等物理图层的编号、名称和显示属性 图层用途(DRAW、MASK等)及图层-用途组合(LPP)的优先级 设计规则约束 几何尺寸规则(最小线宽/间距) 包围和延伸规则 密度规则和特殊工艺规则(如天线效应) 器件定义 MOS管、电阻等器件的图层构成 电学参数

u013620135的博客 8140

LeetCode 1020. 飞地的数量题解

1020. 飞地的数量题解 题目来源:1020. 飞地的数量 2022.02.12每日一题

小明不要写Bug的博客 491

精密加工零件自动报价智能体设计与实现

摘要 本文设计并实现了一个精密加工零件自动报价智能体系统。该系统通过计算机视觉和几何分析技术,自动读取3D图纸(STEP/STL格式),提取影响加工成本的几何特征,实现精准报价。系统采用模块化设计,包含3D模型解析、特征提取、成本计算和报价生成四个核心模块。关键技术包括:使用PythonOCC处理STEP文件,Trimesh处理STL网格;实现体积、表面积、包围盒等基础几何量计算;开发特征提取算法识别复杂曲面、深孔等加工难点;基于规则库进行可加工性评分和成本估算。相比传统人工报价方式,该系统能显著提高报价效

AI的内部世界的博客 112

LeetCode 1020. 飞地的数量

1020. 飞地的数量 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。 返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。 示例 1: 输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]] 输出:3 解释:有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。 示

Daylight629博客 587

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

golang力扣leetcode 1020.飞地的数量

1020.飞地的数量1020.飞地的数量题解代码 1020.飞地的数量 1020.飞地的数量 题解 BFS或者DFS,这题的思路就是把边框当作搜索的点,那么能搜索到的就是能走通的,即代码中的vis,进行遍历即可算出搜索不到的,就是答案了 代码 package main func numEnclaves(grid [][]int) int { var dirs = []struct{ x, y int }{{-1, 0}, {1, 0}, {0, -1}, {0, 1}} var vis = make(

清风 643

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Leecode 1020. 飞地的数量 DFS/BFS

原题链接:Leecode 1020. 飞地的数量 DFS class Solution { public: int x[4]={-1,1,0,0}; int y[4]={0,0,-1,1}; int sum=0; bool dfs(vector<vector<int>>& grid,int i,int j) { int m=grid.size(),n=grid[0].size(); bool f=fa

想买很多漂亮衣服但是买不起的博客 196

jre9下载 jdk9

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

查询接待收待飞地数量失败_leetcode 1020. Number of Enclaves(飞地的数量)

Given a 2D array A, each cell is 0 (representing sea) or 1 (representing land)A move consists of walking from one land square 4-directionally to another land square, or off the boundary of the grid.Re...

weixin_39608479的博客 135

Leetcode1020. 飞地的数量(medium)

Leetcode1020. 飞地的数量(medium),Python题解,广度优先搜索

chenxy_bwave的专栏 775

LeetCode第1020题 - 飞地的数量

LeetCode第1020题 - 飞地的数量

流水账 438

图论第二天|岛屿数量.深搜版、岛屿数量.广搜版、岛屿的最大面积、1020.飞地的数量

图论第二天。

weixin_41725662的博客 720

LeetCode 1020 飞地的数量[dfs] HERODING的LeetCode之路

解题思路: 一道万金油的题目,可以用深度优先或者广度优先的方法去解决,这里只提供深度优先的代码。既然是找无法离开的陆地,那么不如把所有的能离开的陆地找到,然后剩下的都是无法离开的陆地。深度优先思路是从四周陆地开始找,通过四个方向,把所有能够离开的陆地都找到并标记,最后统计所有没标记的陆地,代码如下: class Solution { private: int m, n; vector<vector<int>> direction = {{1, 0}, {-1, 0}.

HERODING23的博客 514

LeetCode——1020. 飞地的数量

广搜

weixin_44750790的博客 383
上一篇: 【广度优先搜索-中等】200. 岛屿数量
下一篇: 【广度优先搜索-中等】130. 被围绕的区域
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值