Course Schedule II
来源:互联网 发布:利用excel制作软件 编辑:程序博客网 时间:2024/06/04 17:48
There are a total of n courses you have to take, labeled from 0 to n - 1.
Some courses may have prerequisites, for example to take course 0 you have to
first take course 1, which is expressed as a pair: [0,1]
Given the total number of courses and a list of prerequisite pairs, return the ordering
of courses you should take to finish all courses.
There may be multiple correct orders, you just need to return one of them. If it is
impossible to finish all courses, return an empty array.
For example:2, [[1,0]]
There are a total of 2 courses to take. To take course 1 you should have finished
course 0. So the correct course order is [0,1]
4, [[1,0],[2,0],[3,1],[3,2]]
There are a total of 4 courses to take. To take course 3 you should have finished
both courses 1 and 2. Both courses 1 and 2 should be taken after you finished course
0. So one correct course order is [0,1,2,3]. Another correct ordering is[0,2,1,3].
与上一题不同的是,输出有向图的顺序。需要用一个数组存储队列弹出的元素。
public int[] findOrder(int numCourses, int[][] prerequisites) {int[] order=new int[numCourses];int len=prerequisites.length;if(prerequisites==null)throw new IllegalArgumentException("illegal prerequisites array");if(len==0){for(int i=0;i<numCourses;i++)order[i]=i;return order;}for(int i=0; i<len; i++)order[prerequisites[i][0]]++;Queue<Integer> queue = new LinkedList<Integer>();for(int i=0; i<numCourses; i++){if(order[i]==0)queue.add(i);}int numNoPre = queue.size();int[] result=new int[numCourses];int j=0;while(!queue.isEmpty()){int top = queue.poll();result[j++]=top;for(int i=0; i<len; i++){if(prerequisites[i][1]==top){order[prerequisites[i][0]]--;if(order[prerequisites[i][0]]==0){numNoPre++;queue.add(prerequisites[i][0]);}}}}if(numNoPre==numCourses)return result;elsereturn new int[0];}
- Course Schedule/Course Schedule II
- [leetcode]Course Schedule II
- leetcode - Course Schedule II
- LeetCode Course Schedule II
- Leetcode210-Course Schedule II
- [leetcode] Course Schedule II
- leetcode:Course Schedule II
- [LeetCode] Course Schedule II
- Course schedule II
- Leetcode Course Schedule II
- 【leetcode】Course Schedule II
- leetcode Course Schedule II
- Course Schedule II
- LeetCode Course Schedule II
- [leetcode] Course Schedule II
- #leetcode#Course Schedule II
- LeetCode Course Schedule II
- Course Schedule II
- 【Java编程思想第4版错误记录】Collections.addAll()静态方法与Collection.addAll()成员方法
- 欢迎使用CSDN-markdown编辑器
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 亚马逊AWS学习——VPC里面几个概念的关系
- leetcode 149 —— Max Points on a Line
- Course Schedule II
- margin:0 auto 与 text-align:center 的区别
- 自我总结 数据分析师必读
- Dialog显示View报错的问题
- 在Xcode中使用Git进行源码版本控制
- hdu2473 Junk-Mail Filter 并查集+删除节点+路径压缩
- 线程间通信问题学习
- Linux shell知多少
- java向C++传图片