当前位置: 首页 > news >正文

统计子岛屿的数量

统计子岛屿

题目描述

给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只包含 0 (表示水域)和 1 (表示陆地)。一个 岛屿 是由 四个方向 (水平或者竖直)上相邻的 1 组成的区域。任何矩阵以外的区域都视为水域。

如果 grid2 的一个岛屿,被 grid1 的一个岛屿 完全 包含,也就是说 grid2 中该岛屿的每一个格子都被 grid1 中同一个岛屿完全包含,那么我们称 grid2 中的这个岛屿为 子岛屿 。

请你返回 grid2 中 子岛屿 的 数目 。

在这里插入图片描述
在这里插入图片描述

思路:

对于(i, j)来说,有四种情况

case1:grid1[i][j] = 1, grid2[i][j] = 1.

case2:grid1[i][j] = 1, grid2[i][j] = 0.

case3: grid1[i][j] = 0, grid2[i][j] = 1.

case4: grid1[i][j] = 0, grid2[i][j] = 0.

对于case4,我们完全不用关心;剩下的case1、case2、case3我们再看,由于是grid1包含grid2,对于case3,如果grid2是陆地,grid1是海水,那么grid1就不包含grid2,那么我们就可以提前干掉grid2中的点;对于case2,如果grid1是陆地,grid2是海水,那么grid2必然不是grid1的子岛,我们可以不做任何操作;对于case1,那么grid2必然是grid1的子岛,我们就计数,然后dfs。

下面看代码:

	public int countSubIslands(int[][] grid1, int[][] grid2) {int m = grid1.length, n = grid1[0].length, count = 0;// 先排除不是子岛屿的节点for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){if(grid2[i][j] == 1 && grid1[i][j] == 0){dfs(grid2, i, j, m, n);}}}System.out.println("======");for(int i = 0;i < m;i++){for(int j = 0;j < n;j++){// 对于条件case1和case2来说// 这块可以优化成if(grid2[i][j] == 1)if(grid2[i][j] == 1 && grid1[i][j] == 1){count++;dfs(grid2, i, j, m, n);}}}return count;}public void dfs(int[][] grid, int i, int j, int m, int n){if(i >= m || i < 0 || j >= n || j < 0|| grid[i][j] == 0 ){return;}grid[i][j] = 0;dfs(grid, i + 1, j, m, n);dfs(grid, i - 1, j, m, n);dfs(grid, i, j + 1, m, n);dfs(grid, i, j - 1, m, n);}public static void main(String[] args) {int[][] grid1 = {{1,1,1,0,0},{0,1,1,1,1},{0,0,0,0,0},{1,0,0,0,0},{1,1,0,1,1}};int[][] grid2 = {{1,1,1,0,0},{0,0,1,1,1},{0,1,0,0,0},{1,0,1,1,0},{0,1,0,1,0}};CountSubIslands countSubIslands = new CountSubIslands();countSubIslands.countSubIslands(grid1, grid2);}

相关文章:

统计子岛屿的数量

统计子岛屿 题目描述 给你两个 m x n 的二进制矩阵 grid1 和 grid2 &#xff0c;它们只包含 0 &#xff08;表示水域&#xff09;和 1 &#xff08;表示陆地&#xff09;。一个 岛屿 是由 四个方向 &#xff08;水平或者竖直&#xff09;上相邻的 1 组成的区域。任何矩阵以外…...

IntelliJ IDEA Maven 项目的依赖分析

在一个 maven 的项目中&#xff0c;我们需要知道我们的项目中使用的包可能有哪些冲突。 这个在 IntelliJ IDEA 中提供了贴心的查看。 选择 Maven 项目中的分析依赖。 随后&#xff0c;IntelliJ IDEA 将会打开一个依赖分析的标签页。 在这个标签页中&#xff0c;我们可以看到…...

数学建模、统计建模、计量建模整体框架的理解以及建模的步骤

数学建模、统计建模、计量建模整体框架的理解以及建模的步骤 引言正文模型的设定模型的估计建模中可能遇到的四种数据类型 模型的检验模型的应用 最后 引言 这篇博客主要写给统计或者数学专业的小白&#xff0c;以供快速上手建模比赛&#xff1b;本人将在这里整合参加建模比赛…...

WaitGroup原理分析

背景 在实际业务开发中&#xff0c;我们会遇到以下场景&#xff1a;请求数据库&#xff0c;批量获取1000条数据记录后&#xff0c;处理数据 为了减少因一次批量获取的数据太多&#xff0c;导致的数据库延时增加&#xff0c;我们可以把一次请求拆分成多次请求&#xff0c;并发去…...

java直播源码:如何使用Java构建一个高效的直播系统

Java直播源码是一种用于实现实时视频流传输的技术&#xff0c;它可以将视频流从一个地方传送到另一个地方。它使用Java语言编写&#xff0c;可以支持多种视频格式&#xff0c;如MPEG、H.264等。 Java直播源码是一种用于实现实时视频流传输的技术&#xff0c;它可以将视频流从一…...

Websocket获取B站直播间弹幕教程——第二篇、解包/拆包

教程一、Websocket获取B站直播间弹幕教程 — 哔哩哔哩直播开放平台 1、封包 我们连接上B站Websocket成功后&#xff0c;要做两件事情&#xff1a; 第一、发送鉴权包。第二、发送心跳包&#xff0c;每30秒一次&#xff0c;维持websocket连接。 这两个包不是直接发送过去&…...

膝关节检测之1设计目标手势与物体交互的动画

原来只用unity自带的IK&#xff0c;发现背部不能动&#xff0c;且手和手指的移动和旋转试了好像没法通过animation实现&#xff08;加入关键帧并修改最终状态的数值后播放没有变化&#xff0c;确定最终关键帧的数值已经改了的&#xff09;。看资料&#xff0c;发现final IK&…...

canvas力导布局

老规矩&#xff0c;先上效果图 <html><head><style>* {margin: 0;padding: 0;}canvas {display: block;width: 100%;height: 100%;background: #000;}</style> </head><body><canvas id"network"></canvas> </…...

【网络安全】「漏洞原理」(二)SQL 注入漏洞之理论讲解

前言 严正声明&#xff1a;本博文所讨论的技术仅用于研究学习&#xff0c;旨在增强读者的信息安全意识&#xff0c;提高信息安全防护技能&#xff0c;严禁用于非法活动。任何个人、团体、组织不得用于非法目的&#xff0c;违法犯罪必将受到法律的严厉制裁。 【点击此处即可获…...

JavaScript中类的学习

一、JavaScript中的类 1.什么是类 类描述了一种代码的组织结构形式&#xff0c;不同的语言中对其实现形式各有差异。JavaScript中的类Class实际是一种描述对象之间引用关系的语法糖。 在Class语法糖出现之前&#xff0c;我们想重用一个功能模块&#xff0c;通常是用一个函数来…...

1600*A. Linova and Kingdom(DFS优先队列贪心)

Problem - 1336A - Codeforces Linova and Kingdom - 洛谷 解析&#xff1a; 开始认为分情况讨论 k 小于等于叶子结点和大于叶子结点的情况&#xff0c;然后选择深度最深的叶子结点和子孙数量最小的结点&#xff0c;但是发现如果把某一个非叶子结点选取&#xff0c;那么其子孙…...

gitlab git lfs的替代软件整理汇总及分析

文章目录 前言替代软件分析git-annexgit-fatgit-symgit-meida 总结 前言 git-lfs科普 Git LFS&#xff08;Large File Storage&#xff09;是一个Git扩展&#xff0c;用于管理大型文件。Git LFS通过将大型文件存储在Git仓库之外&#xff0c;从而加快了Git操作的速度。它使用指…...

IDEA 2023.2.2图文安装教程及下载

IDE 系列的第二个年度更新现已发布&#xff0c;涵盖 IntelliJ IDEA、WebStorm、PyCharm、DataGrip、GoLand、DataSpell 以及 All Products Pack 订阅中包含的其他工具。该版本还包括多项用户体验增强功能&#xff0c;例如 Search Everywhere&#xff08;随处搜索&#xff09;中…...

第六届“中国法研杯”司法人工智能挑战赛

解锁司法科技的未来 “中国法研杯”司法人工智能挑战赛&#xff08;Legal AI Challenge&#xff0c;简称LAIC&#xff09;&#xff0c;是面向法院侧人工智能应用领域唯一权威比赛&#xff0c;大赛愿景是在拥有全球最大规模司法数据的中国&#xff0c;实现法律界、学术界、产业界…...

Springcloud中间件-----分布式搜索引擎 Elasticsearch

该笔记是根据黑马程序员的课来自己写了一遍的,b站有对应教程和资料 第一部分 第二部分 第三部分 预计看完跟着练习5小时足够 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff…...

基于深度学习的目标检测和语义分割:机器视觉中的最新进展

基于深度学习的目标检测和语义分割是机器视觉领域的两个重要任务&#xff0c;它们在图像处理、自动驾驶、医学影像分析和智能视频监控等应用中发挥着关键作用。以下是这两个领域的最新进展&#xff1a; 目标检测&#xff08;Object Detection&#xff09;&#xff1a; 一阶段检…...

微信小程序报错request:fail -2:net::ERR_FAILED(生成中间证书)

微信小程序报错request:fail -2:net::ERR_FAILED-生成中间证书 前言一、检查网站ssl证书二、生成证书方法1.获取中间证书手动合并1.进入网站&#xff1a;[https://www.myssl.cn/tools/downloadchain.html](https://www.myssl.cn/tools/downloadchain.html)2.点击下一步3.手动合…...

Ubuntu更改时区

sudo apt install tzdata 进行安装时区&#xff0c;有很多时区可供选择。 然后执行:tzselect rootd75c94dcd226:/# date 2023年 10月 11日 星期三 06:25:12 UTC rootd75c94dcd226:/# tzselect Please identify a location so that time zone rules can be set correctly. Ple…...

0144 文件管理

目录 4.文件管理 4.1文件系统基础 4.2目录 4.3文件系统 部分习题 4.文件管理 4.1文件系统基础 4.2目录 4.3文件系统 部分习题 1.UNIX操作系统忠&#xff0c;输入/输出设备视为&#xff08;&#xff09; A.普通文件 B.目录文件 C.索引文件 D.特殊文…...

python psutil库之——获取网络信息(网络接口信息、网络配置信息、以太网接口、ip信息、ip地址信息)

文章目录 使用Python psutil库获取网络信息安装psutil库获取网络连接信息查看所有网络连接过滤特定状态的连接 获取网络接口信息获取网络IO统计信息实例1实例2 总结 使用Python psutil库获取网络信息 Python的psutil库是一个跨平台库&#xff0c;能够方便地获取系统使用情况和…...

零基础5分钟部署AI股票分析师:Ollama本地大模型一键生成专业报告

零基础5分钟部署AI股票分析师&#xff1a;Ollama本地大模型一键生成专业报告 1. 为什么你需要一个本地AI股票分析师 在金融投资领域&#xff0c;及时获取专业分析报告是做出明智决策的关键。但传统方式存在几个痛点&#xff1a; 数据隐私问题&#xff1a;使用在线分析工具需…...

1940-2025年各省市区县乡镇各月100m高空平均风速及风向角计算结果

各省市区县乡镇各月100m 高空平均风速及风向角计算结果1940&#xff5e;2025 各省市区县的平均风速_100m、平均风向角度_100m、平均风向16方位分类_100m&#xff1a; 1940~2025年各乡镇各月100m高空平均风速及风向角计算结果.dta 1940~2025年各城市各月100m高空平均风速及风…...

别再只盯着神经网络了!聊聊AI的另外两条路:专家系统和强化学习怎么用

当深度学习不是最优解&#xff1a;专家系统与强化学习的实战突围指南 在科技媒体的狂轰滥炸下&#xff0c;神经网络几乎成了人工智能的代名词。但当我们真正将AI技术落地到企业级场景时&#xff0c;往往会发现&#xff1a;那些需要处理小样本数据、要求决策过程透明可解释、或者…...

Xamarin.Macios部署与发布:从开发到上架的完整流程

Xamarin.Macios部署与发布&#xff1a;从开发到上架的完整流程 【免费下载链接】xamarin-macios .NET for iOS, Mac Catalyst, macOS, and tvOS provide open-source bindings of the Apple SDKs for use with .NET managed languages such as C# 项目地址: https://gitcode.…...

别只盯着 Claw 了,这波“真香”技能才是真的生产力神器!

手把手教你一键部署OpenClaw&#xff0c;连接微信、QQ、飞书、钉钉等&#xff0c;1分钟全搞定&#xff01; 说白了&#xff0c;各家大厂出的 Claw 产品&#xff0c;核心逻辑就是“AI 大模型 技能插件”。模型是地基&#xff0c;而你用得爽不爽&#xff0c;全看这些技能给不给…...

OpenClaw+Qwen2.5-VL-7B实战:飞书机器人自动处理图片文档

OpenClawQwen2.5-VL-7B实战&#xff1a;飞书机器人自动处理图片文档 1. 为什么需要自动化图片文档处理 上周团队周会上&#xff0c;产品经理小张分享了一组用户调研的手写笔记照片。这些宝贵的一线反馈需要整理成电子版归档&#xff0c;但手动转录不仅耗时&#xff0c;还容易…...

OpenFontRender:嵌入式MCU的轻量级TTF字体渲染库

1. OpenFontRender 库深度解析&#xff1a;面向嵌入式微控制器的 TTF 字体渲染引擎OpenFontRender 是一款专为资源受限微控制器设计的开源 TTF&#xff08;TrueType Font&#xff09;字体渲染库&#xff0c;其核心目标是在 Arduino IDE 生态下实现高质量、可定制、跨平台的矢量…...

OpenClaw隐私保护方案:Qwen3.5-9B本地处理医疗图片的10个细节

OpenClaw隐私保护方案&#xff1a;Qwen3.5-9B本地处理医疗图片的10个细节 1. 为什么选择本地化医疗图片处理 去年帮家人整理体检报告时&#xff0c;我遇到一个两难问题&#xff1a;既想用AI分析CT影像的异常阴影&#xff0c;又担心把敏感数据上传到第三方平台。这个矛盾促使我…...

从空调到电动车:拆解NTC和PTC热敏电阻在你身边电子产品里的‘隐藏任务’

从空调到电动车&#xff1a;拆解NTC和PTC热敏电阻在你身边电子产品里的‘隐藏任务’ 你有没有想过&#xff0c;为什么手机快充时充电头不会烫到冒烟&#xff1f;汽车座椅加热为什么不会越坐越烫&#xff1f;这些看似简单的日常体验背后&#xff0c;其实都藏着一对神奇的电子元件…...

# 系列文10:突破Activiti限制!政务工作流任意流转,支持跳退

系列文10&#xff1a;突破Activiti限制&#xff01;政务工作流任意流转&#xff0c;支持跳退回退 非科班野生程序员&#xff0c;深耕政务信息化20年&#xff0c;这套自研Java Web框架支撑过省级新农保、全国首例跨省医保结算等核心民生系统&#xff0c;18年稳定运行至今。本系…...