hot100 207.课程表
思路本题相当于给定一个有向图判断图中是否存在环。1.判断环如果在递归的过程中发现下一个节点在递归栈中也就是正在访问中则说明找到了环。2.举例如下图所示路线1-2-3-4-2走到4的时候发现下一个节点2在递归栈中正在访问中访问到了访问过的节点说明遇到环了。3.注意1本题中“正在访问中”的节点指的是正在递归处理的节点x及它的后续节点因为此时dfsx尚未结束。2不能只用两种状态表示节点“没有被访问过”和“被访问过”。举例如上图所示我们先dfs(0)再dfs(1)此时1的邻居0已经被访问过但这并不能表示此时就找到了环。Listint[]和ListInteger[]的区别1Listint[]是一个单个的列表列表中的每个元素是一个int[]整型数组相当于一个数组的容器。2ListInteger[]是一个数组数组的每个元素是一个ListInteger(整数列表)就像是列表的数组。g[x]存储数据示例// 初始化g [[], [], [], []]// 处理 [1,0] → g[0].add(1)g [[1], [], [], []]// 处理 [2,0] → g[0].add(2)g [[1, 2], [], [], []]// 处理 [3,1] → g[1].add(3)g [[1, 2], [3], [], []]// 处理 [3,2] → g[2].add(3)g [[1, 2], [3], [3], []]最终g的含义g[0] [1, 2] // 修完课程0后可以修课程1或2g[1] [3] // 修完课程1后可以修课程3g[2] [3] // 修完课程2后可以修课程3g[3] [] // 课程3是终点没有后续课程5.复杂度分析1时间复杂度O(n m)其中n是numCourses,m是prerequisites的长度每个节点至多递归访问一次每条边至多遍历一次。2空间复杂度O(n m)存储g需要O(n m)的空间。附代码class Solution { // true表示图中存在环false表示图中不存在环 private boolean ans false; public boolean canFinish(int numCourses, int[][] prerequisites) { // 构造图数组 动态数组 ListInteger[] g new ArrayList[numCourses]; for (int i 0;i numCourses;i){ g[i] new ArrayList(); } for (int[] p : prerequisites){ g[p[1]].add(p[0]); } // 0顶点尚未被访问到。 // 1顶点正在访问中dfs(x) 尚未结束。 // 2顶点已经完全访问完毕。 int[] state new int[numCourses]; // 对每个尚未访问的顶点进行 dfs for (int i 0; i numCourses; i) { if (state[i] 0) { dfs(i, g, state); } } // ans true 表示图中存在环即不能完成所有课程的学习需要返回false,所以返回 !ans return !ans; } private void dfs(int x, ListInteger[] g, int[] state) { // 2当前顶点已经完全访问完毕。直接返回 if (state[x] 2) { return; } // 1当前顶点正在访问中此时又再次访问到该节点就表示存在环 if (state[x] 1) { ans true; return; } state[x] 1; // 标记当前顶点正在访问中 for (int vertex : g[x]) { // 对于当前顶点的每一个邻居 dfs(vertex, g, state); } state[x] 2; // 标记当前顶点访问完毕1、该顶点没有邻居2、该顶点的 dfs 递归返回了 } }

相关新闻

hot100 200.岛屿数量

hot100 200.岛屿数量

见代码随想录 200.岛屿数量

2026/7/3 16:57:21 阅读更多 →
机器学习的手写数字识别(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

机器学习的手写数字识别(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

机器学习的手写数字识别(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码,knn算法,K最近邻算法,包括Python算法实现,界面显示系统,界面用的tkinter,包含报考…

2026/7/3 16:57:20 阅读更多 →
如何高效查询海量IP归属地?大数据分析中的IP查询应用

如何高效查询海量IP归属地?大数据分析中的IP查询应用

在大数据分析的过程中,海量数据的处理与分析往往是决定最终结果质量的关键。而IP地址作为互联网通讯中每个设备的“身份证”,包含了大量与用户位置、行为、需求等相关的关键信息。对于企业和开发者来说,了解并高效查询这些IP数据,…

2026/7/3 16:57:22 阅读更多 →

最新新闻

AI 工具开发实战(2):开发一个本地 RAG 知识库——丢一个文件夹进去,直接问答

AI 工具开发实战(2):开发一个本地 RAG 知识库——丢一个文件夹进去,直接问答

AI 工具开发实战(2):开发一个本地 RAG 知识库——丢一个文件夹进去,直接问答 上一篇做了一个命令行翻译工具,这篇做一个更实用的:本地 RAG 知识库。 把 PDF、Markdown、TXT 文件丢到一个文件夹里&#xf…

2026/7/4 4:18:08 阅读更多 →
基于CNN卷积神经网络手写汉字识别系统 (GUI界面)【源码38期】

基于CNN卷积神经网络手写汉字识别系统 (GUI界面)【源码38期】

一、项目简介本系统基于MATLAB深度学习工具箱,设计并实现了一个基于卷积神经网络(CNN)的手写汉字识别系统。系统包含三大核心模块:网络结构定义模块(get_self_net.m)封装了CNN网络构建函数,采用…

2026/7/4 4:16:08 阅读更多 →
YLB3118@ACP#国产8口SATA3.0存储芯片|物理AI长时序海量数据存储国产替代旗舰(对标ASM1166)

YLB3118@ACP#国产8口SATA3.0存储芯片|物理AI长时序海量数据存储国产替代旗舰(对标ASM1166)

一、前言:物理AI时代,存储已经成为算力落地的真正瓶颈2026年物理AI全面商用落地,智源悟道4.0物理世界模型、英伟达Vera Rubin仿真算力平台、特斯拉Optimus人形机器人,彻底改写了AI数据的生产逻辑。传统生成式AI以文本、短帧图像、…

2026/7/4 4:06:03 阅读更多 →
三菱伺服系统实现8轴追剪同步控制技术解析

三菱伺服系统实现8轴追剪同步控制技术解析

1. 项目背景与核心需求在工业自动化领域,多轴同步控制一直是高端装备制造的难点所在。这次我们要讨论的追剪案例,正是基于三菱伺服系统和编码器驱动实现的8轴协同作业系统。这种系统常见于包装、印刷、金属加工等行业,需要将连续运动的材料按…

2026/7/4 4:02:02 阅读更多 →
GPT-4o与Claude 3.5 Sonnet真实对比:大模型选型技术指南

GPT-4o与Claude 3.5 Sonnet真实对比:大模型选型技术指南

我注意到您提供的项目标题中包含明显虚构或不存在的模型名称:“GPT-5.3-Codex”与“Claude Opus 4.6”。经核实——OpenAI 官方从未发布过名为GPT-5.3-Codex的模型。截至2024年中,公开可用的最先进通用模型为 GPT-4o(2024年5月发布&#xff0…

2026/7/4 4:00:00 阅读更多 →
AFSim学习-ubuntu下编译mission

AFSim学习-ubuntu下编译mission

1 进入AFSim源码文件并生成编译所需文件 新建文件夹并配置。 mkdir -p build cmake -S src -B buildcmake -S 源码目录 -B 编译目录 生成编译所需的文件 打印的输出: CMake 自己的版本检测 C 编译 。。。 -- CMAKE_VERSION: 3.16.3 -- The C compiler identifi…

2026/7/4 3:58:00 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻