class Solution {
vector<vector<int>>tmp;
vector<int>index;
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
tmp.resize(numCourses);
index.resize(numCourses);
for(auto&i:prerequisites){
tmp[i[1]].emplace_back(i[0]);
index[i[0]]++;
}
queue<int>que;
for(int i=0;i<numCourses;i++){
if(!index[i]) que.emplace(i);
}
int count=0;
while(!que.empty()){
count++;
int n=que.front();
que.pop();
for(int i:tmp[n]){
if(--index[i]==0) que.emplace(i);
}
}
return count>=numCourses;
}
};
class Solution {
vector<vector<int>>map;
vector<int>index;
public:
vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {
map.resize(numCourses);
index.resize(numCourses);
for(auto& i:prerequisites){
map[i[1]].push_back(i[0]);
index[i[0]]++;
}
vector<int>res;
for(int i=0;i<numCourses;i++) if(!index[i]) res.push_back(i);
for(int i=0;i<res.size();i++){
for(int j:map[res[i]]){
if(!--index[j]){
res.push_back(j);
}
}
}
if(res.size()<numCourses) return {};
return res;
}
};
class Solution {
public:
vector<int> findMinHeightTrees(int n, vector<vector<int>>& edges) {
if(n==1) return {0};
vector<vector<int>>tree(n);
vector<int>tmp(n);
for(auto& i:edges){
tree[i[0]].push_back(i[1]);
tree[i[1]].push_back(i[0]);
tmp[i[0]]++;
tmp[i[1]]++;
}
queue<int>que;
for(int i=0;i<n;i++){
if(tmp[i]==1) que.push(i);
}
for(int cur=n;cur>2;){
int size=que.size();
cur-=size;
while(size--){
int fr=que.front();
que.pop();
for(int i:tree[fr]){
if(--tmp[i]==1) que.push(i);
}
}
}
vector<int>res;
while(!que.empty()){
res.push_back(que.front());
que.pop();
}
return res;
}
};
原文地址:https://blog.csdn.net/qq_46653505/article/details/134753143
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_31484.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。