题目

https://leetcode.com/problems/course-schedule-ii/

题解

本题与 leetcode 207. Course Schedule 基本相同,代码只需要稍作修改,将图的遍历顺序记录在一个 list 中。

import java.util.ArrayList;
import java.util.Collections;class Node {int inDegree;ArrayList<Integer> children;boolean alive;public Node() {alive = true;children = new ArrayList<>();}
}class Solution {public int[] findOrder(int numCourses, int[][] prerequisites) {ArrayList<Integer> list = new ArrayList<>();// init coursesNode[] nodes = new Node[numCourses];for (int i = 0; i < numCourses; i++) {nodes[i] = new Node();}// init prerequisitesfor (int i = 0; i < prerequisites.length; i++) {nodes[prerequisites[i][0]].children.add(prerequisites[i][1]);nodes[prerequisites[i][1]].inDegree++;}// check DAGint remain = numCourses; // remaining nodesboolean valid = true; // last loop really workswhile (valid && remain > 0) {valid = false;for (int i = 0; i < numCourses; i++) {if (nodes[i].inDegree == 0 && nodes[i].alive) {list.add(i);for (int n : nodes[i].children) { // updatenodes[n].inDegree--;}valid = true;nodes[i].alive = false;remain--;}}}// for returnif (remain == 0) {Collections.reverse(list);int[] ints = new int[list.size()];int i = 0;for (Integer n : list) {ints[i++] = n;}return ints;} else return new int[]{};}
}

leetcode 210. Course Schedule II | 210. 课程表 II(Java)相关推荐

  1. LeetCode—210. 课程表 II

    210. 课程表 II 题目描述:现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1.给你一个数组 prerequisites ,其中 prerequisite ...

  2. leetcode *210. 课程表 II(拓补排序)(2020.5.17)

    [题目]*210. 课程表 II 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们 ...

  3. [Leedcode][JAVA][第210 题][课程表 II][拓扑排序][BFS][DFS][有向图]

    [问题描述][第210 题][课程表 II][中等] 现在你总共有 n 门课需要选,记为 0 到 n-1.在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用 ...

  4. 207.课程表 | 210.课程表II(拓扑排序)

    207.课程表 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 . 在选修某些课程之前需要一些先修课程. 先修课程按数组 prerequisites 给出 ...

  5. 210. 课程表 II kahn求拓扑图算法

    210. 课程表 II 难度:中等 题目描述 解题思路 以前没有写过图的,但是有了解过拓扑排序,根据提示还有算法描述很容易就写出代码了.用栈和队列都行,如果用栈就是深度优先搜索,用队列就是广度优先搜索 ...

  6. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  7. LeetCode 107. Binary Tree Level Order Traversal II

    LeetCode 107. Binary Tree Level Order Traversal II Solution1:我的答案 比102那道题多了一行代码... /*** Definition f ...

  8. leetcode 39. 组合总和 40. 组合总和 II

    leetcode 39. 组合总和 40. 组合总和 II 组合总和 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和 ...

  9. 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II

    P2616 [USACO10JAN]购买饲料II Buying Feed, II 题目描述 Farmer John needs to travel to town to pick up K (1 &l ...

最新文章

  1. Facebook工程师教你什么是随机森林,就算零基础也可以看懂 | 干货
  2. 小米豪派大红包!向几千名员工发放股权激励,人均39万,应届生都有!小米员工却吵翻天:不公平,作秀!...
  3. 做 AI 大咖在顶级单位之间随兴漂移,好开心!
  4. 这可能是东半球最保姆级的后台服务器开发学习路线
  5. mysql 改变枚举值_mysql 改变数据类型为枚举不成功?
  6. CDN关键技术研究与应用—内容路由技术
  7. 图像处理/255.0 和/127.5 -1
  8. 大二暑假周进度报告(五)
  9. 拉屎能赚钱?在马桶上月入过万?原来卫生间里还有这么多隐藏福利,超模君都惊了……
  10. Java中 break continue return 的用法以及区别
  11. NSDate NSTimerZone 时区转换
  12. 送你一份价值5800元的技术干货PPT | 技术管理者工作坊强势来袭!
  13. python 密度聚类_Python密度聚类算法-DBSCAN实践
  14. USRP系列(一):软件定义无线电(SDR)
  15. # 关于Dran,Cran,CloundRan ,的区别
  16. 玩游戏计算机丢失msvcp,计算机丢失msvcp怎么办
  17. oracle中间人投毒漏洞,ORACLE远程投毒漏洞修复(RAC环境)
  18. 【python爬虫】每日获取强智教务系统课表,并发送短信到学生手机
  19. Q3财报“牛虎“斗日趋激烈,能否追上美国券商大户“罗宾汉“?
  20. What is the Softmax Function?详解机器学习中的Softmax函数【小白菜可懂】

热门文章

  1. HDOJ1536 S-nim
  2. 0x5f3759df的数学原理
  3. 二项式反演[bzoj3622]已经没有什么好害怕的了
  4. 感染性的木马病毒分析之样本KWSUpreport.exe
  5. 用完成例程(Completion Routine)实现的重叠I/O模型
  6. Error:java: 无效的标记 -version 编译错误的解决办法
  7. C++中的指针与引用
  8. 美团/力扣(647)--回文字串
  9. OIL + VCache如何改善Facebook视频延迟 并减少存储和计算开销?
  10. LiveVideoStackCon讲师热身分享 ( 七 ) —— 视频编码器的对比与选择