题意:
在判断能否修完全部课程的基础上,如果能,输出任意一个课程顺序。
思路:
拓扑排序。
代码:
class Solution {
public:
vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>> graph(numCourses, vector<int>());
vector<int> in(numCourses, 0);
for (auto it : prerequisites) {
graph[it[1]].push_back(it[0]);
in[it[0]]++;
}
vector<int> res;
queue<int> que;
for (int i=0; i<numCourses; ++i) {
if (in[i] == 0) {
que.push(i);
res.push_back(i);
}
}
while(!que.empty()) {
int cur = que.front();
que.pop();
for (int pre : graph[cur]) {
in[pre]--;
if (in[pre] == 0) {
que.push(pre);
res.push_back(pre);
}
}
}
if (res.size() == numCourses) return res;
return {};
}
};
日期
2019 年 06 月 10 日 —— 迷迷糊糊就过了的感觉。
2020 年 07 月 12 日 —— 上次用的dfs,这次用的bfs 拓扑排序。


435

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



