Course Schedule II
2015-07-27 10:55
393 查看
BFS
public class Solution {
public int[] findOrder(int numCourses, int[][] prerequisites) {
int length = prerequisites.length;
if (length == 0) {
int[] result = new int[numCourses];
for (int i = 0; i < numCourses; i++) {
result[i] = i;
}
return result;
}
int[] preCount = new int[numCourses];
for (int i = 0; i < length; i++) {
preCount[prerequisites[i][0]]++;
}
Queue<Integer> q = new LinkedList<Integer>();
for (int i = 0; i < numCourses; i++) {
if (preCount[i] == 0) {
q.offer(i);
}
}
int numNoPre = q.size();
int[] result = new int[numCourses];
int cur = 0;
while (!q.isEmpty()) {
int course = q.poll();
result[cur++] = course;
for (int i = 0; i < length; i++) {
if (course == prerequisites[i][1]) {
preCount[prerequisites[i][0]]--;
if (preCount[prerequisites[i][0]] == 0) {
q.offer(prerequisites[i][0]);
numNoPre++;
}
}
}
}
if (numNoPre == numCourses) {
return result;
} else {
return new int[0];
}
}
}DFS
public class Solution {
public int[] findOrder(int numCourses, int[][] prerequisites) {
int length = prerequisites.length;
if (length == 0) {
int[] result = new int[numCourses];
for (int i = 0; i < numCourses; i++) {
result[i] = i;
}
return result;
}
int[] preCount = new int[numCourses];
for (int i = 0; i < length; i++) {
preCount[prerequisites[i][0]]++;
}
Queue<Integer> q = new LinkedList<Integer>();
for (int i = 0; i < numCourses; i++) {
if (preCount[i] == 0) {
q.offer(i);
}
}
int numNoPre = q.size();
int[] result = new int[numCourses];
int cur = 0;
while (!q.isEmpty()) {
int course = q.poll();
result[cur++] = course;
for (int i = 0; i < length; i++) {
if (course == prerequisites[i][1]) {
preCount[prerequisites[i][0]]--;
if (preCount[prerequisites[i][0]] == 0) {
q.offer(prerequisites[i][0]);
numNoPre++;
}
}
}
}
if (numNoPre == numCourses) {
return result;
} else {
return new int[0];
}
}
}DFS
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- Purpose of the MacroMobile Project 1029 ------- No deletion of any Doc for the project
- String.Empty,NULL和""的区别
- C++算法--图算法读书笔记1
- FusionCharts中文乱码问题
- POJ1523 SPF dfs
- [convex hall] ZOJ 1518 This Sentence is False
- GraphData之 Bridge 计算
- 搜索专题