当前位置: 首页 > 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.jsqmd.com/news/871448/

相关文章:

  • Magic VLSI:如何用这款免费开源工具完成你的第一个集成电路设计?
  • 2026年一键生成论文工具盘点:12款神器助你高效完成选题大纲、撰稿和降重
  • 5分钟掌握APK Editor Studio:Android应用逆向编辑终极指南
  • 超声波骨密度仪EFT整改案例
  • 长春别墅电梯代理评测:迅达授权服务商核心能力对比 - 奔跑123
  • Android动态换肤框架深度解析:架构设计与性能优化方案
  • SynthSeg终极指南:无需重新训练的MRI脑部图像自动分割工具
  • 长期使用Taotoken的Token Plan套餐实际节省了多少成本
  • 从菜鸟裹裹到京东物流,AI Agent规模化落地的4个硬性前提(含MLOps+LLMOps双栈集成检查清单)
  • Lamini:5分钟快速搭建专属AI模型的高效Python客户端
  • 如何用Python快速接入Taotoken并调用多模型API,实现你的AI超级技能
  • 沪深A股:如何获取炸板股池数据
  • Agent-S:革命性智能体框架如何实现72.60%成功率的计算机交互自动化
  • 为 Node.js 后端服务接入 Taotoken 提供 AI 能力支持
  • Redis 缓存、队列、排行榜的核心用法
  • 戴森球计划工厂蓝图终极指南:从模块化思维到星际工厂架构
  • Windows任务栏全能监控中心:TrafficMonitor插件完全指南
  • 戴森球计划工厂蓝图仓库技术架构深度探索
  • 使用Taotoken后API调用延迟与账单清晰度实际体验分享
  • 好用只是入场券,敢用才是护城河:企业级Agent如何进入真实业务
  • Linux上运行Windows软件真的复杂吗?Bottles让跨平台兼容变得简单
  • 别再买“伪AI”系统了!建筑行业AI Agent真伪鉴别清单(含6项可现场验证的技术指标)
  • 5分钟掌握BepInEx:让Unity游戏模组开发变得简单
  • 【能力进阶】测试工程师必须了解的 Tokenization(分词器)避坑指南
  • 戴森球计划工厂蓝图宝典:5000+免费设计助你轻松建设星际工厂
  • 2026年RFID软硬件系统智能化品牌推荐榜单
  • 工业AI数字孪生技术:工业制造的虚拟革命 数字孪生(Digital Twin)通过实时数据采集、三维建模和AI仿真,为物理设备创建动态虚拟副本,实现工业全生命周期的监控与优化的方案
  • 免费德州扑克GTO求解器终极指南:如何用Desktop Postflop提升你的扑克技术
  • MatterGen完整指南:如何用AI在5分钟内生成高性能无机材料
  • 857264