要求:拓扑排序课程表
思路:
class Solution {
public:
vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>> edges(numCourses);
vector<int> in(numCourses);
vector<int> course;
for(int i=0;i<prerequisites.size();++i){
edges[prerequisites[i][1]].push_back(prerequisites[i][0]);
in[prerequisites[i][0]]++;
}
queue<int> q;
for(int i=0;i<in.size();++i)
if(in[i]==0)q.push(i);
while(!q.empty()){
int i=q.front();
course.push_back(i);
q.pop();
for(int j=0;j<edges[i].size();++j){
in[edges[i][j]]--;
if(in[edges[i][j]]==0)q.push(edges[i][j]);
}
}
if(course.size()==numCourses)return course;
else return {};
}
};