您的位置:首页 > 运维架构

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息