Note:
就是在207题的基础上加了一个输出,不是单纯的看能不能排序了,但是207的代码实际上已经把拍的顺序记录下来了,就是在维护的那个队列里面,把那个输出出来即可
代码如下:
class Solution {
public:
vector<int> findOrder(int n, vector<vector<int>>& edges) {
vector<vector<int>> g(n);
vector<int> d(n);
for(auto e : edges){
int a = e[1], b = e[0];
g[a].push_back(b);
d[b] ++;
}
vector<int> q;
int f = 0, e = 0;
for(int i = 0; i < n; i ++)
if(d[i] == 0)
q.push_back(i), e ++;
vector<int> ans;
while(f < e){
auto p = q[f ++];
for(auto s : g[p])
if(-- d[s] == 0) q.push_back(s), e ++;
}
if(n == q.size())
return q;
return ans;
}
};