您的位置:首页 > 其它

210. Course Schedule II

2016-07-22 03:59 218 查看
和207 Course Schedule是一样的

public int[] findOrder(int numCourses, int[][] prerequisites) {
int[] result = new int[numCourses];
if(numCourses < 1) {
return new int[0];
}
int index = numCourses - 1;
Queue<Integer> queue = new LinkedList<Integer>();
int[] indegree = new int[numCourses];
int len = prerequisites.length;
for(int i = 0; i < len; i++) {
indegree[prerequisites[i][1]]++;
}
for(int i = 0; i < numCourses; i++) {
if(indegree[i] == 0) {
queue.offer(i);
}
}
while(!queue.isEmpty()) {
int cur = queue.poll();
result[index] = cur;
index--;
for(int i = 0; i < len; i++) {
if(prerequisites[i][0] == cur) {
indegree[prerequisites[i][1]]--;
if(indegree[prerequisites[i][1]] == 0) {
queue.add(prerequisites[i][1]);
}
}
}
}
for(int i = 0; i < numCourses; i++) {
if(indegree[i] != 0) {
return new int[0];
}
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: