思路类似207,只需要增加一个数组存放入度=0的课程顺序即可
class Solution {
public:
vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {
vector<int> indeg(numCourses);
vector<vector<int>> course(numCourses);
queue<int> zero;
vector<int> sequence;
for(int i =0;i<prerequisites.size();i++)
{
indeg[prerequisites[i][0]]++;
course[prerequisites[i][1]].push_back(prerequisites[i][0]);
}
for(int i = 0;i<numCourses;i++)
{
if(indeg[i]==0)
zero.push(i);
}
while(zero.size()!=0)
{
int pre = zero.front();
zero.pop();
numCourses--;
sequence.push_back(pre);
for(int i=0;i<course[pre].size();i++)
{
indeg[course[pre][i]]--;
if(indeg[course[pre][i]]==0)
zero.push(course[pre][i]);
}
}
vector<int> no;
if(numCourses == 0)
return sequence;
else return no;
}
};