210. Course Schedule II

class Solution {
public:
    vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) {
        vector<int> inDegs(numCourses,0);
        unordered_map<int,unordered_set<int>> adjList;
        queue<int> courseQueue;
        vector<int> ret;
        for(auto p:prerequisites){
            inDegs[p.first]++;
            adjList[p.second].insert(p.first);
        }
        for(int i =0;i<inDegs.size();++i){
            if(inDegs[i]==0) courseQueue.push(i);
        }
        while(!courseQueue.empty()){
            int cur = courseQueue.front();
            courseQueue.pop();
            ret.push_back(cur);
            for(int n : adjList[cur]){
                inDegs[n]--;
                if(inDegs[n]==0){
                    courseQueue.push(n);
                }
            }
        }
        return ret.size() == numCourses? ret: vector<int>();
    }
};

results matching ""

    No results matching ""