问题

例子

思路
同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

这篇博客详细介绍了如何解决210. 课程表 II的问题,通过两种不同的方法进行讲解,包括使用数组记录已确定的课程,并提供了相应的数学公式和代码实现。
410

被折叠的 条评论
为什么被折叠?



