【发布时间】:2020-09-08 16:28:58
【问题描述】:
这是 leetcode 210
从 0 到 n - 1,您总共需要学习 n 门课程。
有些课程可能有先决条件,例如,如果先决条件[i] = [ai, bi] 这意味着您必须先学习课程 bi,然后再学习课程 ai。
给定课程总数 numCourses 和先决条件对列表,返回完成所有课程所需的课程顺序。
如果有很多有效答案,请返回其中任何一个。如果不可能完成所有课程,则返回一个空数组。
输入:numCourses = 4,先决条件 = [[1,0],[2,0],[3,1],[3,2]] 输出:[0,2,1,3]
当我在下面提交此代码时,我会收到 runtime error: reference binding to null pointer of type 'std::vector<int, std::allocator<int> >' (stl_vector.h) 如果有人可以帮助我,我将不胜感激!
class Solution {
public:
vector<int> adj[2002];
bool vis[2002];
vector <int> myvect;
void dfs(int node)
{
if(!vis[node])
{
for(int i = 0; i < (int)adj[node].size(); i++)
{
if(!vis[adj[node][i]])
dfs(vis[adj[node][i]]);
}
myvect.push_back(node);
}
}
vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites)
{
vector<int> adj[2002];
int n = prerequisites.size();
int m = prerequisites[0].size();
if(n == 0 && m == 0)
{
for(int i = 0; i < numCourses; i++){
myvect.push_back(i);
}
return myvect;
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
adj[i].push_back(j);
}
for(int i = 0; i < numCourses; i++)
dfs(i);
return myvect;
}
};
【问题讨论】:
-
嗨,不确定这是否会引起您的兴趣stackoverflow.com/questions/47947956/…
-
你从不初始化
vis,所以读取它有未定义的行为。