Course Schedule II LeetCode solution in C++

1
class Solution {
2
public:
3
vector<int> findOrder(int numCourses, vector<vector<int>> &prerequisites) {
4
map<int, vector<int>> adj;
5
vector<int> indegree(numCourses, 0);
6
vector<int> res;
7
for (int i = 0; i < prerequisites.size(); i++) {
8
adj[prerequisites[i][1]].push_back(prerequisites[i][0]);
9
indegree[prerequisites[i][0]]++;
10
}
11
queue<int> q;
12
for (int i = 0; i < numCourses; i++) {
13
if (indegree[i] == 0) q.push(i);
14
}
15
while (!q.empty()) {
16
int x = q.front();
17
q.pop();
18
res.push_back(x);
19
for (auto u : adj[x]) {
20
indegree[u]--;
21
if (indegree[u] == 0) {
22
q.push(u);
23
}
24
}
25
}
26
if (res.size() == numCourses) return res;
27
return {};
28
}
29
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0