LeetCode算法练习top100:(6)图论

package top100.图论;import java.util.LinkedList;
import java.util.Queue;public class TOP {//200. 岛屿数量//网格类问题的 DFS 遍历方法int[][] ways = new int[][]{{-1, 0}, {1, 0}, {0, 1}, {0, -1}};public int numIslands(char[][] grid) {int m = grid.length, n = grid[0].length;int res = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == '1') {res++;dfs(grid, i, j, m, n);}}}return res;}private void dfs(char[][] grid, int i, int j, int m, int n) {grid[i][j] = '0';for (int[] way : ways) {int x = i + way[0], y = j + way[1];if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1') {dfs(grid, x, y, m, n);}}}// 994. 腐烂的橘子// BFS遍历图//同时遍历所有的腐烂橘子,类似对k个有序链表排序问题的处理思想,用队列记录当前要处理的结点public int orangesRotting(int[][] grid) {int m = grid.length;int n = grid[0].length;int fresh = 0; //统计新鲜的橘子个数Queue<int[]> queue = new LinkedList<>(); //记录每轮腐烂的橘子位置for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == 1) {fresh++;} else if (grid[i][j] == 2) {queue.add(new int[]{i, j});}}}int[][] ways = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}};int res = 0;while (fresh > 0 && !queue.isEmpty()) { //while (fresh > 0)会有死循环,有无法感染到的橘子res++;int k = queue.size();//每轮取出上一轮感染的橘子for (int i = 0; i < k; i++) {int[] cur = queue.poll();for (int[] way : ways) {int x = cur[0] + way[0];int y = cur[1] + way[1];//可以感染的新鲜橘子if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == 1) {fresh--;grid[x][y] = 2;//将本轮感染的橘子标记,防止重复遍历queue.add(new int[]{x, y});}}}}//有橘子无法感染if (fresh > 0) {return -1;} else {return res;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目标检测——R-CNN系列检测算法总结

R-CNN系列算法详细解读文章&#xff1a; R-CNN算法解读SPPNet算法解读Fast R-CNN算法解读Faster R-CNN算法解读Mask R-CNN算法解读 目录 1、概述1.1 获取目标候选框1.2 候选框提取特征1.3 候选框分类及边框回归 2、R-CNN系列算法概述2.1 R-CNN算法2.2 SPPNet算法2.3 Fast R-CN…

2024最新版软件测试八股文(文档)

前言 &#xff08;第一个就刷掉一大批人&#xff09; 有很多“会自动化”的同学来咨询技术问题&#xff0c;他总会问到我一些元素定位的问题。元素定位其实都不算自动化面试的问题。 一般我都会问&#xff1a;你是定位不到吗&#xff1f;通常结果都是说确实定位不到。 做自…

131.类型题-计算数学序列的和,请编写函数fun,其功能是S=……【满分解题代码+详细分析】(数学序列的和类型题-C/C++JavaPython实现)

文章目录 131.类型题-计算数学序列的和:计算并输出一.题目1.1 解题思路二.解题代码2.1 C/C++解题代码2.2 python解题代码2.3 Java解题代码三.解题代码仔细分析3.1 C/C++解题代码仔细分析3.2 Java解题代码仔细分析3.3 Python解题代码仔细分析四.本类型题解题诀窍五.寄语131.类型…

Spring Boot 之 ModelFactory

1.initModel 功能&#xff1a; public void initModel(NativeWebRequest request, ModelAndViewContainer container, HandlerMethod handlerMethod)throws Exception {Map<String, ?> sessionAttributes this.sessionAttributesHandler.retrieveAttributes(request);c…

Codeforces Round 910 (Div. 2)

Codeforces Round 910 (Div. 2) 文章目录 Codeforces Round 910 (Div. 2)ABCD A 模拟 #include <bits/stdc.h>using namespace std; const int N1e510; char s[N];void solve(){int n , k , cb 0 , ans 0;cin >> n >> k;for(int i 1 ; i < n ; i ){c…

简易电路特性测试仪

目录 摘 要... 3 第一章 绪论... 5 1.1 研究课题背景... 5 1.2 国内外发展概况... 7 1.3 课题研究的目的... 9 1.4 课题的研究内容及章节安排... 9 第二章 电路特性测试仪的设计方案... 10 2.1 系统总体设计思路... 10 2.2 电路特性测试仪总体设计方案…

HarmonyOS开发上手

首先献出开发官网地址 &#xff08;https://developer.harmonyos.com/cn/develop/&#xff09; 本文内容 基础入门内容介绍安装DevEco StudioDevEco Studio常用功能介绍项目工程结构详解 1. 基础入门内容介绍 应用开发流程 在正式开始之前还需要了解一些有关的基础概念 方舟…

【PyTorch】概述

文章目录 1. PyTorch是什么&#xff1f;2. PyTorch的特点3. PyTorch的架构 1. PyTorch是什么&#xff1f; PyTorch是一个深度学习框架&#xff0c;由Facebook于2016年开源发布。PyTorch是基于Torch框架的Python接口&#xff0c;旨在提供易用的强大工具来进行神经网络的构建和训…

python实现从远程服务器读取 JSON 文件、解析内容并将其存储到 MySQL 表中,然后删除已解析的文件

创建一个 Python 脚本&#xff0c;利用 Paramiko 库连接到远程服务器&#xff0c;读取 JSON 文件、解析内容并将其存储到 MySQL 表中&#xff0c;最后删除文件。 import paramiko import json import MySQLdb import os# SSH 连接参数 ssh_client paramiko.SSHClient() ssh_c…

H5流媒体播放器EasyPlayer播放H.265新增倍速播放功能,具体如何实现?

目前我们TSINGSEE青犀视频所有的视频监控平台&#xff0c;集成的都是EasyPlayer.js版播放器&#xff0c;它属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;包括WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#x…

做项目碰到的一些安卓与苹果的不兼容,做个记录

默认字体 // 苹果手机默认字体为 font-family:simsun; // 安卓和H5默认字体为 font-family: initial;屏幕截图(html-to-image) // 这里只做js部分(vue3使用)import * as htmlToImage from html-to-image;let imgcanvas ref() // 图片标签img的src指向const captureScreen ()…

vivado分析-在 Versal 器件中执行 NoC 服务质量分析

AMD Vivado ™ 中的服务质量 (QoS) 用于将片上网络 (NoC) 编译器生成的当前 NoC 解决方案估算所得 QoS 与 AXI NoCIP 和 / 或 AXI4 ‑ Stream NoC IP 中指定的 QoS 要求进行对比。一旦 NoC 解决方案过时 &#xff0c; 就需要调用 NoC 编译器并生成新的 NoC 解决方案以…

论文投稿查询会议期刊及deadlines的网站

1. 这个是查近期CCF-ABC的ddl会议的网址 https://ccfddl.github.io/ https://ccfddl.top/ 2. 期刊选刊 https://ijournal.topeditsci.com/home https://journalsuggester.springer.com/ 3. IEEE出版物推荐 https://publication-recommender.ieee.org/home

微信小程序跳转到外部小程序

要在微信小程序中跳转到外部小程序&#xff0c;你可以使用 navigateToMiniProgram 或 redirectToMiniProgram API。下面是它们的说明和代码示例&#xff1a; navigateToMiniProgram API&#xff1a; 该 API 可以让用户从当前小程序跳转到另一个外部小程序&#xff0c;并保留当…

《算法通关村——滑动窗口高频问题之**寻找子串异位词**》

《算法通关村——滑动窗口高频问题之寻找子串异位词》 567. 字符串的排列 给你两个字符串 s1 和 s2 &#xff0c;写一个函数来判断 s2 是否包含 s1 的排列。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 换句话说&#xff0c;s1 的排列之一是 s2…

python3实现定时拉取rabbitmq队列里面的数据,并输出到文件中。

使用pika,一个Python RabbitMQ客户端库&#xff0c;结合Python的datetime和json库来实现定时从RabbitMQ队列中拉取数据&#xff0c;并将数据输出到按当天日期动态生成的文件中。 首先&#xff0c;确保您已经安装了 pika 库。如果尚未安装&#xff0c;可以使用以下命令进行安装&…

重温经典struts1之搭建环境

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 今天参加了一个项目&#xff0c;什么项目&#xff1f;struts1的项目&#xff0c;什么&#xff1f;&#xff01;现在还有struts1的项目&#xff0c;读到这里你是不是和我…

Linux scatterlist 详解

源码基于&#xff1a;Linux 5.4 约定&#xff1a; 芯片架构&#xff1a;ARM64内存架构&#xff1a;UMACONFIG_ARM64_VA_BITS&#xff1a;39CONFIG_ARM64_PAGE_SHIFT&#xff1a;12CONFIG_PGTABLE_LEVELS &#xff1a;3 0. 前言 之前在《Linux DMA... 零拷贝》博文分享了DMA 技…

网络安全卫士:上海迅软DSE的员工上网管理策略大揭秘!

在日常办公中&#xff0c;企业员工可能会在互联网上有意或无意的将一些包含内部重要信息的内容发布出去&#xff0c;从而造成不必要的违规及泄密风险&#xff0c;因此对终端用户进行规范的上网行为管理&#xff0c;既能有效预防重要数据泄密&#xff0c;同时也能提高员工办公效…

linux之tcpdump命令

在日常系统维护中&#xff0c;遇到需要抓包的需求&#xff0c;下面对linux环境使用tcpdump命令进行抓包进行分析记录。tcpdump命令可用抓取流动在网卡上的数据包。 1、tcpdump常用参数说明 -c : 抓包次数&#xff0c;达到指定次数后停止抓包-C : 文件大小&#xff0c;写入文件…