/*
* 210 Course ScheduleII
* 2016-6-9 by Mingyang
* http://www.jyuan92.com/blog/leetcode-course-schedule-ii/
* 在明白了I以后我们做II就很简单了,从最后的节点一个一个的放入queue里面,然后分别记录下来
* 不过有以下几个注意点:
* 1.不用开始判断空了
* 2.最后的判断很重要,如果numOfPreCourse == numCourses就表示我们有这么一个完成的课程
* 我们就返回res,不然就返回空的array
*/
public int[] findOrder(int numCourses, int[][] prerequisites) {
int[] res = new int[numCourses];//区别1,多了一个装order的array
int[] preCourses = new int[numCourses];
// store the in-degree #
for (int[] prerequisite : prerequisites) {
preCourses[prerequisite[0]]++;
}
Queue<Integer> queue = new LinkedList<Integer>();
for (int i = 0; i < preCourses.length; i++) {
if (preCourses[i] == 0) {//这里是从下往上走,从最低级的课往高级的课走
queue.add(i);
}
}
int numOfPreCourse = 0;
int i = 0;//区别2,多了一个i来遍历res
while (!queue.isEmpty()) {
int top = queue.poll();
res[i++] = top;
numOfPreCourse++;
for (int[] prerequisite : prerequisites) {
if (prerequisite[1] == top) {
preCourses[prerequisite[0]]--;
if (preCourses[prerequisite[0]] == 0) {
queue.add(prerequisite[0]);
}
}
}
}//最后再多一个判断,就是返回是否是需要return新的
if (numOfPreCourse == numCourses) {
return res;
} else {
return new int[0];
}
}

210 Course ScheduleII的更多相关文章

  1. Leetcode总结之Graph

    package Graph; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections ...

  2. nfs:server 172.168.1.22 not responding,still trying问题解决方法 平台为RealARM 210平台

    nfs:server 172.168.1.22 not responding,still trying问题解决方法 ,平台为RealARM 210平台. 这里的问题是在使用nfs挂载文件系统时遇到的, ...

  3. [LeetCode] Course Schedule I (207) & II (210) 解题思路

    207. Course Schedule There are a total of n courses you have to take, labeled from 0 to n - 1. Some ...

  4. 算法竞赛入门经典 习题2-10 排列(permutation)

    习题2-10 排列(permutation) 用1,2,3,-,9组成3个三位数 abc, def, 和ghi,每个数字恰好使用一次,要求 abc:def:ghi = 1:2:3.输出所有解.提示:不 ...

  5. (一)MYSQL ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.10.210' (111) 解决方法

    今天在测试MySQL的连接时候,发现连接不通过,并报错ERROR 2003 (HY000): Can't connect to mysql server on '192.168.10.210' (11 ...

  6. MYSQL ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.10.210' (111) 解决方法

    今天在测试MySQL的连接时候,发现连接不通过,并报错ERROR 2003 (HY000): Can't connect to mysql server on '192.168.10.210' (11 ...

  7. PAT《数据结构学习与实验指导》实验项目集 2-09 2-10 2-11 2-12 2-13

    pat 2-09 装箱问题模拟 #include<cstdio> #include<set> #include<vector> using namespace st ...

  8. [Codeforces #210] Tutorial

    Link: Codeforces #210 传送门 A: 贪心,对每个值都取最大值,不会有其他解使答案变优 #include <bits/stdc++.h> using namespace ...

  9. LeetCode:课程表II【210】

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

随机推荐

  1. win7系统 windows update 总是更新失败解决方法:

    win7系统 windows update 总是更新失败解决方法: 右键单击桌面“计算机”选择“管理“. 进到“计算机管理“窗口后,展开”服务和应用程序“并双击”服务“,在窗口右侧按照名称找到”Win ...

  2. OFDM、FTTx、SCTP、Ad Hoc、WSN术语简介

    上课提到一些术语,下来查了一下,总结在这里. OFDM: OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(M ...

  3. docker 镜像仓库的安装与使用

    安装Docker Compose 解决依赖 [root@service-1 ~]# curl -L "https://github.com/docker/compose/releases/d ...

  4. docker 深入理解之namespace

    namespace 名称空间 docker容器主要通过资源隔离来实现的,应该具有的6种资源隔 namespace 的六项隔离 namespace 系统调用参数 隔离的内容 UTS CLONE_NEWU ...

  5. Perl 安装 JSON 包

    $tar xvfz JSON.tar.gz $cd JSON $perl Makefile.PL $make $make install

  6. 遇到的django问题

    问题1: No migrations to apply 删除了migrations中0001_initial.py文件,重新执行 python manage.py makemigrations pyt ...

  7. 5.1 qbxt 一测 T2

    求和[问题描述] 组合数 C(n,m)是从 n 个物品中取 m 个的方案数. C(n,m)=(n!)/(m!(n-m)!) 斐波那契数列 F 满足,F[0]=F[1]=1,n≥2 时 F[n]=F[n ...

  8. 7 SQL 集合运算

    7 集合运算 7-1 表的加减法 本章将会和大家一起学习“集合运算”操作.在数学领域,“集合”表示“(各种各样的)事物的总和”:在数据库领域,表示“记录的集合”.具体来说,表.视图和查询的执行结果都是 ...

  9. java 生成二维码工具

    二维码生成 Gitee:https://gitee.com/search?utf8=%E2%9C%93&search=qrext4j&group_id=&project_id= ...

  10. 2. CHARACTER_SETS

    2. CHARACTER_SETS CHARACTER_SETS表提供有关可用字符集的信息. 下表中的SHOW Name值对应于SHOW CHARACTER SET语句的列名. INFORMATION ...