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

【代码随想录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

岛屿数量 深搜 题目链接/文章讲解&#xff1a;代码随想录 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默认的内容页的上一页&下一页的调用代码是&#xff1a; 上一篇&#xff1a;[!--info.pre--] 下一篇&#xff1a;[!--info.next--] 但是实话实说&#xff0c;如果做个很普通的模版那足够用了&#xff0c;但是如果想个性化一点的话&#xff0c;比如加背景&#xff…...

(7)c++复合数据类型之数组

数组 数组就是可以存储一组相同类型的值&#xff0c;比如int a[10];就是一个存储10个int类型的数组。 数组初始化 数组初始化可以单个初始化&#xff0c;也是使用列表初始化&#xff0c;列表初始化可以全部&#xff0c;或者部分&#xff0c;如下案例&#xff1a; #include &…...

2.1 > Shell 是什么、如何更熟练的使用 Bash Shell

Shell 基础知识 Shell是计算机操作系统中的一个命令行解释器&#xff0c;由C语言编写&#xff0c;用于用户与操作系统之间进行交互。用户可以通过Shell输入命令&#xff0c;操作系统接收到这些命令后执行相应的操作。Shell一般还提供了编程语言的基本功能&#xff0c;允许用户…...

YOLO V3 网络构架解析

YOLO V3&#xff08;You Only Look Once version 3&#xff09;是由Joseph Redmon等人于2018年提出的一种基于深度学习的目标检测算法。它在速度和精度上相较于之前的版本有了显著提升&#xff0c;成为计算机视觉领域的一个重要里程碑。本文将详细解析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轻量化技术应用的推进&#xff0c;5G RedCap旨在提供低功耗、低成本、广覆盖等功能特点赋能电力智能化升级。特别适用于工业物联网、低空经济、车联网、消费电子和轻量级5G的需求。 5G RedCap工业路由器的特点 低功耗&#xff1a;5G RedCap工业路由器通过节能技术&#…...

029.浏览器自动化-抓取#document下的内容

一、iframe下的#document是什么 #document 是一个特殊的 HTML 元素&#xff0c;表示 <iframe> 元素内部的文档对象。当你在 HTML 页面中嵌入一个 <iframe> 元素时&#xff0c;浏览器会创建一个新的文档对象来表示 <iframe> 内部的内容。这 个文档对象就是 #…...

2024前端html5,css3面试题总汇

1.XML&#xff0c;HTML&#xff0c;XHTML区别⭐ XML&#xff1a;XML是一个可扩展标记语言&#xff0c;主要是用来存储&#xff0c;传输数据的&#xff0c;并非显示数据&#xff0c;可以用来标记数据&#xff0c;定义数据类型&#xff0c;允许用户对自己的标记语言进行定义&…...

css实现外层不换行,内层换行

css实现上图效果&#xff0c;内容A和B整体不换行&#xff0c;B内容中换行 <div className"description"> <div className"label">{formatMessage({id: description})}</Col> <divclassName"value"> &l…...

word取消自动单词首字母大写

情况说明&#xff1a;在word输入单词后首字母会自动变成大写 &#xff08;1&#xff09;点击菜单栏文件 &#xff08;2&#xff09;点击“更多”——>“选项” &#xff08;3&#xff09;点击“校对”——>“自动更正选项” &#xff08;4&#xff09;取消“句首字母大写…...

flex常用固定搭配

flex常用固定搭配 flex简写&#xff1a;flex-grow&#xff08;项目放大&#xff09;&#xff0c;flex-shrink &#xff08;项目缩小&#xff09;&#xff0c;flex-basis&#xff08;项目本身&#xff09; flex: 1; 全写&#xff1a;flex: 1 1 0%;内容自动放大或缩小占满剩余…...

Kafka、Kafka Streams、Drools、Redis 和分布式数据库的风控系统程序

由于实时风控系统难度较大&#xff0c;集成框架设计各个单位均有特点&#xff0c;快速建立一个通用性较强&#xff0c;学习、实施和使用成本较低的框架尤其重要。 提供一个简化的 Java 程序示例&#xff0c;演示如何将 Kafka 消息中间件、Kafka Streams 计算引擎、Drools 规则…...

C++在实际项目中的应用第一课:游戏开发中的C++

第五章&#xff1a;C在实际项目中的应用 第一课&#xff1a;游戏开发中的C 1. 游戏引擎架构的详细分析 游戏引擎是现代游戏开发的核心&#xff0c;负责处理图形渲染、物理计算、音频管理和用户输入等多项功能。以下是游戏引擎架构的各个主要组成部分及其详细分析。 1.1 渲染…...

一键下载海外youtbe视频 解锁版 支持多分辨率

下载&#xff1a;https://pan.quark.cn/s/387e1110ebe5 【应用名称】&#xff1a;Snaptube 【应用版本】&#xff1a;7.28.0 【应用大小】&#xff1a;26.6M 【测试机型】&#xff1a;小米10S 【适用平台】&#xff1a;Andriod 【版本说明】&#xff1a;解锁版...

Scala内部类的运用

内部类&#xff1a;定义在类里面的类&#xff08;内部类可以访问私有成员用它来操作类的私有成员&#xff0c;封闭性更好&#xff09; 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 简单的回显服务器和客户端代码。 备注&#xff1a;代码中会用到地址转换函数。 noc…...

机器学习在聚合物及其复合材料中的应用与实践

在当前的工业和科研领域&#xff0c;聚合物及其复合材料因其卓越的物理和化学性能而受到广泛关注。这些材料在航空航天、汽车制造、能源开发和生物医学等多个行业中发挥着至关重要的作用。随着材料科学的发展&#xff0c;传统的实验和理论分析方法已逐渐无法满足新材料研发的需…...

用大模型或者预训练模型对图片进行OCR

背景:使用大模型或者预训练模型(比如来自huggingface上的模型)对图片进行OCR,并将识别结果标记在图片原文的下方。 愿我们终有重逢之时,而你还记得我们曾经讨论的话题。 QQ group 868373192 QQ second group 277356808 要使用预训练模型对图片进行OCR(光学字符识别)…...

如何使用的是github提供的Azure OpenAI服务

使用的是github提供的Azure OpenAI的服务gpt-4o 说明&#xff1a;使用的是github提供的Azure OpenAI的服务&#xff0c;可以无限薅羊毛。开源地址 进入&#xff1a; 地址 进入后点击 右上角“Get API key”按钮 点击“Get developer key” 选择Beta版本“Generate new to…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

boost::filesystem::path文件路径使用详解和示例

boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类&#xff0c;封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解&#xff0c;包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...