leetcode 210. Course Schedule II | 210. 课程表 II(Java)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 210. Course Schedule II | 210. 课程表 II(Java)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
https://leetcode.com/problems/course-schedule-ii/
題解
本題與 leetcode 207. Course Schedule 基本相同,代碼只需要稍作修改,將圖的遍歷順序記錄在一個(gè) 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[]{};} }總結(jié)
以上是生活随笔為你收集整理的leetcode 210. Course Schedule II | 210. 课程表 II(Java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: leetcode 209. Minimu
- 下一篇: leetcode 211. Design