问题
例子
思路
同207课程表,使用数组保存每次删除【确定上】的课程
-
方法1
$$$$
-
方法2
$$$$
代码
//方法1
class Solution {
public int[] findOrder(int numCourses, int[][] prerequisites) {
int[] res = new int[numCourses];
int index = 0;
//构建入度数组,和邻接表
int[] in = new int[numCourses];
List<List<Integer>> list = new ArrayList<>();
for(int i=0; i<numCourses; i++)
list.add(new ArrayList<>());
for(int[] arr : prerequisites)
{
in[arr[0]]++;
list.get(arr[1]).add(arr[0]);
}
Queue<Integer> q = new LinkedList<>();
for(int course=0; course<in.length; course++)
if(in[course]==0) q.offer(course);
while(q.size()>0) {
int del = q.poll();
res[index++]=del;
numCourses--;
for(int course : list.get(del)) {
in[course]--;
if(in[course]==0) q.offer(course);
}
}
return numCourses==0?res:new int[0];
}
}
//方法2