210.課程表Ⅱ
阿新 • • 發佈:2021-01-21
技術標籤:leetcode
思路類似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;
}
};