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

【每天学习一点算法 2026/05/22】课程表 II

每天学习一点算法 2026/05/22

题目:课程表 II

现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。

例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1] 。
返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 任意一种 就可以了。如果不可能完成所有课程,返回 一个空数组 。

这题跟 课程表 的解法一样,只需要在回归过程往结果数组里面 push 课程即可。

functioncanFinish(numCourses:number,prerequisites:number[][]):boolean{conststatus=newArray(numCourses).fill(0)// 用于记录课程状态:0 未搜索 1 搜索中 2 已搜索constgraph:number[][]=Array.from({length:numCourses},()=>[])// 邻接表,graph[i]表示学习课程 i 需要,先学习课程集合for(const[a,b]ofprerequisites)graph[a].push(b)// 遍历 prerequisites 初始化邻接表constres=[]// 课程学习顺序// 辅助函数,用于深度优先遍历从某课程开始向上搜索它依赖课程functionhelper(course:number){if(status[course]===1)returnfalse// 如果课程处于搜索中状态返回falseif(status[course]===2)returntrue// 如果课程处于已搜索状态返回truestatus[course]=1// 修改当前课程为搜索中状态for(constpreofgraph[course]){// 递归搜索当前课程所有前置课程if(!helper(pre))returnfalse// 前置课程中有处于搜索中的会得到false, 直接返回false}// 回归到此说明此课程可以完成学习,标记为已搜索,并返回truestatus[course]=2res.push(course)// 我们递归的边界是最先需要学习的课程,所以回归时直接 push 就是学习顺序returntrue}// 主循环,遍历所有课程,进行搜索for(leti=0;i<numCourses;i++){if(status[i]===2){// 已搜索过的课程直接跳过continue}if(!helper(i)){// 当前课程建立有向图存在环,无法完成,直接返回空数组return[]}}// 遍历完成返回学习顺序数组returnres};

题目来源:力扣(LeetCode)

http://www.zskr.cn/news/1356896.html

相关文章:

  • 超声波骨密度仪EFT整改案例
  • 3步上手UI-TARS智能助手:让AI帮你自动化电脑和浏览器任务
  • 微服务限流实战:Nginx 漏桶与网关令牌桶
  • 沪深A股:如何获取炸板股池数据
  • Linux上运行Windows软件真的复杂吗?Bottles让跨平台兼容变得简单
  • 戴森球计划工厂蓝图宝典:5000+免费设计助你轻松建设星际工厂
  • 别再买“伪AI”系统了!建筑行业AI Agent真伪鉴别清单(含6项可现场验证的技术指标)
  • 5分钟掌握BepInEx:让Unity游戏模组开发变得简单
  • 3步实现聊天记录永久保存:WeChatExporter全平台导出指南
  • 从零打造高效社区:BBS-Go现代化开源论坛完整解决方案
  • Google I/O 2026 全解析:从 Gemini 3.5 到 AI 智能体,一文看懂谷歌的 AI 全景布局
  • 如何通过智能CPU调度策略实现32%的多线程性能提升?
  • 免费德州扑克GTO求解器终极指南:如何用Desktop Postflop提升你的扑克技术
  • 【健身SaaS厂商紧急预警】:AI Agent接入后用户留存率提升41%的关键3个埋点逻辑
  • 开发运维一体化场景下Taotoken的API密钥管理与访问控制实践
  • Fabric模组开发终极指南:从零开始创建你的第一个Minecraft模组
  • 接口关联痛点:让 AI 自动生成 Jmeter/Postman 的 JSONPath 提取表达式
  • 2026 高炉炼铁智能化技术全景与演进路径~系列文章04:云-边-端协同架构:高炉智能化底层支撑体系
  • DECA加速器:突破LLM推理内存瓶颈的硬件优化方案
  • 3步构建你的智能工作流:PromptX实战指南
  • 2026年天津黄金回收怎么选不踩坑福运来领衔六家机构评测 - 黄金回收
  • 如何构建高性能一站式广告平台:朱雀广告系统5大核心优势解析
  • 5分钟搞定Cursor VIP配置:零基础解锁AI编程助手的终极指南
  • 2026电商运营如何提升自身能力素质:从小白到高薪运营的进阶路线图
  • 如何永久激活IDM?2024最新免费IDM激活脚本完全指南
  • 3步掌握跨平台智能下载工具:一键获取微信视频号、抖音无水印视频
  • 职场人常熬夜作息不规律,滴鸡精适配日常食养
  • SteamDB浏览器扩展:让Steam体验更智能的7个实用功能
  • 告别寻找困难!3步快速获取官方macOS安装文件的终极指南
  • OpCore-Simplify:黑苹果自动化配置的革命性技术架构深度解析