【代码随想录Day50】图论Part02
岛屿数量 深搜
题目链接/文章讲解:代码随想录
class Solution {// 计算网格中岛屿的数量public int numIslands(char[][] grid) {int sum = 0; // 初始化岛屿数量为0// 遍历整个网格for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {// 如果当前单元格是陆地('1'),则表示发现了一个新的岛屿if (grid[i][j] == '1') {sum++; // 增加岛屿计数dfs(grid, i, j); // 使用深度优先搜索(DFS)标记整个岛屿}}}return sum; // 返回岛屿的总数}// 深度优先搜索,用于标记连接的陆地public void dfs(char[][] grid, int i, int j) {// 如果索引越界或当前单元格是水('0'),则返回if (i < 0 || i > grid.length - 1 || j < 0 || j > grid[0].length - 1 || grid[i][j] == '0') {return;}// 将当前单元格标记为水('0'),表示已经访问过grid[i][j] = '0';// 递归地检查四个方向(上、下、左、右)的相邻单元格dfs(grid, i - 1, j); // 上dfs(grid, i + 1, j); // 下dfs(grid, i, j - 1); // 左dfs(grid, i, j + 1); // 右}
}
岛屿数量 广搜
题目链接/文章讲解:代码随想录
class Solution {public int numIslands(char[][] grid) {// 创建一个队列用于BFSQueue<int[]> queue = new LinkedList<>();// 初始化岛屿数量int sum = 0;// 遍历整个网格for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {// 如果当前位置是陆地('1')if (grid[i][j] == '1') {// 发现一个新的岛屿,岛屿数量加一sum++;// 将当前位置加入队列,并标记为已访问('0')queue.add(new int[]{i, j});grid[i][j] = '0';// 开始BFSwhile (!queue.isEmpty()) {// 从队列中取出一个位置int[] cur = queue.poll();int x = cur[0];int y = cur[1];// 检查上方的位置if (x - 1 >= 0 && grid[x - 1][y] == '1') {queue.add(new int[]{x - 1, y});grid[x - 1][y] = '0'; // 标记为已访问}// 检查下方的位置if (x + 1 < grid.length && grid[x + 1][y] == '1') {queue.add(new int[]{x + 1, y});grid[x + 1][y] = '0'; // 标记为已访问}// 检查左边的位置if (y - 1 >= 0 && grid[x][y - 1] == '1') {queue.add(new int[]{x, y - 1});grid[x][y - 1] = '0'; // 标记为已访问}// 检查右边的位置if (y + 1 < grid[0].length && grid[x][y + 1] == '1') {queue.add(new int[]{x, y + 1});grid[x][y + 1] = '0'; // 标记为已访问}}}}}// 返回岛屿的总数量return sum;}
}
岛屿的最大面积
题目链接/文章讲解:代码随想录
class Solution {// 主方法,用于计算二维网格中最大的岛屿面积public int maxAreaOfIsland(int[][] grid) {int max_area = 0; // 初始化最大岛屿面积为0// 遍历整个二维网格for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {// 如果当前格子是岛屿(值为1)if (grid[i][j] == 1) {// 使用深度优先搜索计算当前岛屿的面积int area = dfs(grid, i, j);// 更新最大岛屿面积max_area = Math.max(max_area, area);}}}return max_area; // 返回最大岛屿面积}// 深度优先搜索方法,用于计算岛屿的面积public int dfs(int[][] grid, int i, int j) {// 检查当前格子是否越界或是否是水域(值为0)if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == 0) {return 0; // 如果是越界或水域,返回面积为0}grid[i][j] = 0; // 将当前格子标记为已访问(值设为0)// 递归计算当前格子上、下、左、右四个方向的岛屿面积int up = dfs(grid, i - 1, j); // 上int down = dfs(grid, i + 1, j); // 下int left = dfs(grid, i, j - 1); // 左int right = dfs(grid, i, j + 1); // 右// 返回当前格子的面积(1)加上四个方向的面积之和return 1 + up + down + left + right;}
}
相关文章:
【代码随想录Day50】图论Part02
岛屿数量 深搜 题目链接/文章讲解:代码随想录 class Solution {// 计算网格中岛屿的数量public int numIslands(char[][] grid) {int sum 0; // 初始化岛屿数量为0// 遍历整个网格for (int i 0; i < grid.length; i) {for (int j 0; j < grid[0].length…...
帝国CMS 内容页调用上一篇下一篇的方法(精华汇总)
帝国cms默认的内容页的上一页&下一页的调用代码是: 上一篇:[!--info.pre--] 下一篇:[!--info.next--] 但是实话实说,如果做个很普通的模版那足够用了,但是如果想个性化一点的话,比如加背景ÿ…...
(7)c++复合数据类型之数组
数组 数组就是可以存储一组相同类型的值,比如int a[10];就是一个存储10个int类型的数组。 数组初始化 数组初始化可以单个初始化,也是使用列表初始化,列表初始化可以全部,或者部分,如下案例: #include &…...
2.1 > Shell 是什么、如何更熟练的使用 Bash Shell
Shell 基础知识 Shell是计算机操作系统中的一个命令行解释器,由C语言编写,用于用户与操作系统之间进行交互。用户可以通过Shell输入命令,操作系统接收到这些命令后执行相应的操作。Shell一般还提供了编程语言的基本功能,允许用户…...
YOLO V3 网络构架解析
YOLO V3(You Only Look Once version 3)是由Joseph Redmon等人于2018年提出的一种基于深度学习的目标检测算法。它在速度和精度上相较于之前的版本有了显著提升,成为计算机视觉领域的一个重要里程碑。本文将详细解析YOLO V3的网络架构&#x…...
【zlm】 webrtc源码讲解(二)
目录 webrtc播放 MultiMediaSourceMuxer里的_ring webrtc播放 > MediaServer.exe!mediakit::WebRtcPlayer::onStartWebRTC() 行 60 CMediaServer.exe!mediakit::WebRtcTransport::OnDtlsTransportConnected(const RTC::DtlsTransport * dtlsTransport, RTC::SrtpSession::…...
5G RedCap工业路由器赋能电力物联网应用
随着5G轻量化技术应用的推进,5G RedCap旨在提供低功耗、低成本、广覆盖等功能特点赋能电力智能化升级。特别适用于工业物联网、低空经济、车联网、消费电子和轻量级5G的需求。 5G RedCap工业路由器的特点 低功耗:5G RedCap工业路由器通过节能技术&#…...
029.浏览器自动化-抓取#document下的内容
一、iframe下的#document是什么 #document 是一个特殊的 HTML 元素,表示 <iframe> 元素内部的文档对象。当你在 HTML 页面中嵌入一个 <iframe> 元素时,浏览器会创建一个新的文档对象来表示 <iframe> 内部的内容。这 个文档对象就是 #…...
2024前端html5,css3面试题总汇
1.XML,HTML,XHTML区别⭐ XML:XML是一个可扩展标记语言,主要是用来存储,传输数据的,并非显示数据,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义&…...
css实现外层不换行,内层换行
css实现上图效果,内容A和B整体不换行,B内容中换行 <div className"description"> <div className"label">{formatMessage({id: description})}</Col> <divclassName"value"> &l…...
word取消自动单词首字母大写
情况说明:在word输入单词后首字母会自动变成大写 (1)点击菜单栏文件 (2)点击“更多”——>“选项” (3)点击“校对”——>“自动更正选项” (4)取消“句首字母大写…...
flex常用固定搭配
flex常用固定搭配 flex简写:flex-grow(项目放大),flex-shrink (项目缩小),flex-basis(项目本身) flex: 1; 全写:flex: 1 1 0%;内容自动放大或缩小占满剩余…...
Kafka、Kafka Streams、Drools、Redis 和分布式数据库的风控系统程序
由于实时风控系统难度较大,集成框架设计各个单位均有特点,快速建立一个通用性较强,学习、实施和使用成本较低的框架尤其重要。 提供一个简化的 Java 程序示例,演示如何将 Kafka 消息中间件、Kafka Streams 计算引擎、Drools 规则…...
C++在实际项目中的应用第一课:游戏开发中的C++
第五章:C在实际项目中的应用 第一课:游戏开发中的C 1. 游戏引擎架构的详细分析 游戏引擎是现代游戏开发的核心,负责处理图形渲染、物理计算、音频管理和用户输入等多项功能。以下是游戏引擎架构的各个主要组成部分及其详细分析。 1.1 渲染…...
一键下载海外youtbe视频 解锁版 支持多分辨率
下载:https://pan.quark.cn/s/387e1110ebe5 【应用名称】:Snaptube 【应用版本】:7.28.0 【应用大小】:26.6M 【测试机型】:小米10S 【适用平台】:Andriod 【版本说明】:解锁版...
Scala内部类的运用
内部类:定义在类里面的类(内部类可以访问私有成员用它来操作类的私有成员,封闭性更好) class Student{var age18def say():Unit{}class Book{val bookName: Any "Scala程序设计"}}object Test19 {def main(args: Arra…...
【在Linux世界中追寻伟大的One Piece】Socket编程UDP
目录 1 -> UDP网络编程 1.1 -> V1版本 -echo server 1.2 -> V2版本 -DictServer 1.3 -> V2版本 -DictServer(封装版) 1 -> UDP网络编程 1.1 -> V1版本 -echo server 简单的回显服务器和客户端代码。 备注:代码中会用到地址转换函数。 noc…...
机器学习在聚合物及其复合材料中的应用与实践
在当前的工业和科研领域,聚合物及其复合材料因其卓越的物理和化学性能而受到广泛关注。这些材料在航空航天、汽车制造、能源开发和生物医学等多个行业中发挥着至关重要的作用。随着材料科学的发展,传统的实验和理论分析方法已逐渐无法满足新材料研发的需…...
用大模型或者预训练模型对图片进行OCR
背景:使用大模型或者预训练模型(比如来自huggingface上的模型)对图片进行OCR,并将识别结果标记在图片原文的下方。 愿我们终有重逢之时,而你还记得我们曾经讨论的话题。 QQ group 868373192 QQ second group 277356808 要使用预训练模型对图片进行OCR(光学字符识别)…...
如何使用的是github提供的Azure OpenAI服务
使用的是github提供的Azure OpenAI的服务gpt-4o 说明:使用的是github提供的Azure OpenAI的服务,可以无限薅羊毛。开源地址 进入: 地址 进入后点击 右上角“Get API key”按钮 点击“Get developer key” 选择Beta版本“Generate new to…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
