/*
* 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. cluvfy comp命令用法

    1.获取集群验证工具cluvfy的帮助信息 grid@rac1:/home/grid>cluvfy -help USAGE: cluvfy [ -help ] cluvfy stage { -l ...

  2. 15分钟学会使用Git

    http://blog.csdn.net/u013510614/article/details/50588446 主体思想 Git作为一个复杂的版本控制系统,命令之多,相信很多小白已经望而却步,有的尝 ...

  3. django 数据库的一些操作

    1.数据过滤: 使用filter()方法 >>> Publisher.objects.filter(name='Apress') [<Publisher: Apress> ...

  4. 自己写的画loss曲线代码

    import matplotlib.pyplot as plt iteration = [] loss = [] with open('/home/sensetime/log.txt','r') as ...

  5. 使用plsql导入dmp文件缺少imp*.exe

    在C:\app\Administrator\product\11.2.0\client_2\BIN 找到imp.exe 导入

  6. Linux environment variables (环境变量)

    Environment variables are often used to store a list of paths of where to search for executables, li ...

  7. PHP24 自定义分页类

    分页类的定义 <?php /** * Class MyPage 分页类 * @package core */ class MyPage { private $totalCount; //数据表中 ...

  8. PHP19 PHPStorm2018和GitHub的使用

    目的 使用GitHub的代码仓库进行项目代码托管. 准备工作 1.在GitHub注册账号 https://github.com/ 2.Start a Project 登陆后创建一个项目 3.创建版本仓 ...

  9. Eclipse Code Recommenders 自动补全(联想)神器

    Eclipse Code Recommenders 可以在eclipse市场中下载.自动补全.模糊匹配.非常有用!

  10. oc学习

    http://www.cnblogs.com/qingyuan/p/3524678.html