Cover image for Classic 150 Interview Questions P210 Course Schedule II

Classic 150 Interview Questions P210 Course Schedule II


Timeline

Timeline

2025-11-04

init

Topological Sort

Problem:

Topological Sort

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
#include <vector>#include <unordered_map>#include <queue>using std::vector;using std::queue;using std::unordered_map;class Solution {    public:	vector<int> findOrder(int numCourses,			      vector<vector<int> > &prerequisites)	{		unordered_map<int, vector<int> > graph;		unordered_map<int, int> indegree;		// ===== Build Graph =====		int i, n = prerequisites.size();		for (i = 0; i < numCourses; i++) {			graph[i] = vector<int>();			indegree[i] = 0;		}		int curr, prev;		for (i = 0; i < n; i++) {			curr = prerequisites[i][0];			prev = prerequisites[i][1];			graph[prev].push_back(curr);			indegree[curr] += 1;		}		// Topological Sort		int p;		vector<int> order;		queue<int> que;		for (i = 0; i < numCourses; i++) {			if (indegree[i] == 0) {				que.push(i);			}		}		while (!que.empty()) {			p = que.front();			que.pop();			order.push_back(p);			for (auto val : graph[p]) {				indegree[val] --;				if(indegree[val] == 0){				    que.push(val);				}			}		}		if(order.size() == numCourses){		    return order;		}		return vector<int>();	}};
Loading comments…