参考了这篇博客
经典写法:
vector<int> findOrder(int n, vector<int>& in, vector<vector<int>>& edges) {
// in: 节点的入度表
// edges:图的邻接表
queue<int> q;
vector<int> ans;
for(int i = 0 ; i < n ; i++)
if(in[i] == 0) q.push(i);
while(!q.empty())
{
int p = q.front();
q.pop();
ans.push_back(p);
for(int i = 0 ; i < edges[p].size() ; i++)
{
int y = edges[p][i];
--in[y];
if(in[y] == 0) q.push(y);
}
}
if(ans.size() == n) return ans;
else return {};
}
本文介绍了一种解决课程表问题的经典算法,通过计算节点的入度和使用邻接表来实现拓扑排序,适用于如LeetCode 207和210等题目。文章详细展示了如何使用队列和向量进行操作,以完成课程的正确排序。
21万+

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



