新闻详情

新闻详情

首页 / 资讯中心 / 详情

元宝 LeetCode 207. 课程表 Java实现

发布时间:2026/10/2 13:55:38来源:尧图网络
元宝    LeetCode 207. 课程表 Java实现
LeetCode 207. 课程表Course ScheduleJava 实现题目简述一共有“numCourses” 门课程编号“0 ~ numCourses-1”。给定“prerequisites” 数组其中“prerequisites[i] [a, b]” 表示 想学课程 a 必须先学课程 b。判断是否能完成所有课程。本质判断有向图中是否存在环有环则无法完成。思路拓扑排序BFS / Kahn 算法核心思想统计每门课的入度有多少先修依赖把所有入度为 0 的课入队不依赖任何课的课逐个出队学完该课后把它指向的课的入度减 1如果某门课入度变为 0加入队列最终学完的课数 总课数则无环可以学完Java 实现class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {// 入度数组indegree[i] 表示学课程 i 前需要先学的课程数int[] indegree new int[numCourses];// 邻接表graph[i] 存的是学了课程 i 之后可以学的课程列表ListList graph new ArrayList();for (int i 0; i numCourses; i) {graph.add(new ArrayList());}// 构建图和入度 for (int[] pre : prerequisites) { int course pre[0]; // 想学的课 int need pre[1]; // 先修的课 graph.get(need).add(course); indegree[course]; } // 把所有入度为 0 的课加入队列 QueueInteger queue new LinkedList(); for (int i 0; i numCourses; i) { if (indegree[i] 0) { queue.offer(i); } } int finished 0; // 已学完的课数 while (!queue.isEmpty()) { int curr queue.poll(); finished; // 学完 curr它指向的所有课的入度减 1 for (int next : graph.get(curr)) { indegree[next]--; if (indegree[next] 0) { queue.offer(next); } } } // 全部学完说明无环 return finished numCourses; }}复杂度分析维度 复杂度时间 O(V E)V 为课程数E 为先修关系数空间 O(V E)邻接表 入度数组示例说明输入: numCourses 4, prerequisites [[1,0],[2,0],[3,1],[3,2]]输出: true解释: 合理顺序如 0 → 1 → 2 → 3或 0 → 2 → 1 → 3输入: numCourses 2, prerequisites [[1,0],[0,1]]输出: false解释: 0 依赖 11 依赖 0形成环无法完成常见坑点入度含义别搞反“[a, b]” 是 a 依赖 b所以 b 指向 aa 的入度 1邻接表存的是学完某课后能学的课方向别存反“finished numCourses” 是判断无环的关键不用人为计数边数延伸DFS 三色标记法 也能判环白/灰/黑思路和 BFS 等价如果题目问 输出一个合法的修课顺序那就是 LeetCode 210. 课程表 II只需把“finished” 换成记录顺序的数组即可需要我补充 DFS 判环版 或 LeetCode 210 输出拓扑排序 的 Java 实现吗
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

随机森林+多因子选股:从因子构建到回测的量化策略实战 2026/10/2 15:28:01

随机森林+多因子选股:从因子构建到回测的量化策略实战

简介:这份资源面向量化投资初学者与机器学习爱好者,提供一套基于随机森林与多因子模型的完整选股策略实现方案,帮助读者理解从因子筛选到收益预测的全流程。压缩包共46个文件,约19.92MB,包含15个Python脚本、10份PDF研…

阅读更多 →
RAG、记忆、API、MCP与鉴权审计:生产级AI应用工具链实战 2026/10/2 15:28:00

RAG、记忆、API、MCP与鉴权审计:生产级AI应用工具链实战

1. 从标题拆解这套工具链到底在解决什么问题 1.1 为什么单靠大模型本身撑不起一个生产级应用 先把标题里的关键词拆开看: RAG、记忆、API、MCP、鉴权审计 。这五个词放在一起,其实描述的是一个非常具体的工程场景——你要做一个能真正上线给用户用的 …

阅读更多 →
季度销售复盘自动化:从Excel到PPT的LLM工作流 2026/10/2 15:27:58

季度销售复盘自动化:从Excel到PPT的LLM工作流

季度末把销售明细整理成复盘报告,再顺手出一版能直接上会的汇报 PPT,这件事听起来像是两个独立任务,实际上是一条完整的数据加工链路。我过去几年每到季度末都要重复走一遍这个流程,早期靠手工透视表加复制粘贴,一份报…

阅读更多 →
没有数据库也能做Notion风格表格:ZenNotes如何在纯.csv文件上实现Table与Board视图 2026/10/2 15:27:45

没有数据库也能做Notion风格表格:ZenNotes如何在纯.csv文件上实现Table与Board视图

没有数据库也能做Notion风格表格:ZenNotes如何在纯.csv文件上实现Table与Board视图 【免费下载链接】zennotes Keyboard-first local Markdown notes with Vim motions, diagrams, and MCP integration. 项目地址: https://gitcode.com/gh_mirrors/zenn/zennotes …

阅读更多 →
D3.js本质:数据驱动DOM的精密耦合系统 2026/10/2 15:27:39

D3.js本质:数据驱动DOM的精密耦合系统

1. 这不是“画图工具”,而是数据与DOM的精密耦合系统 D3.js这个词最近在前端圈里反复刷屏,从企业级数据可视化大屏到免费SVG素材网的底层渲染逻辑,再到HBuilder里配置HTML/CSS/JavaScript时绕不开的图表依赖——它早已不是小众库&#xff0c…

阅读更多 →
AI指挥实战:从提示词工程到多智能体协作 2026/10/2 15:27:39

AI指挥实战:从提示词工程到多智能体协作

1. AI不听话,多半是因为你指挥的方式不对先说个现象:同一个AI工具,有人拿它一天产出三篇稿子、两套PPT大纲,顺手还改了个BUG;有人用了半天,觉得它“就是个高级一点的搜索引擎”,甚至被它的胡说八…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉