典型的拓扑排序题,用BFS,重复找入读为0的节点,不断删除即可。我的做法没有建立degree数组,导致执行时间较长,下面列出我的解法和标准BFS解法。
标准BFS

class Solution{
public:vector<unordered_set<int>> makegraph(int numCourses, vector<pair<int, int>> prerequisites){vector<unordered_set<int>> graph(numCourses);for(auto pre:prerequisites) graph[pre.second].insert(pre.first);return graph;}vector<int> compute_degrees(vector<unordered_set<int>> graph){vector<int> degrees(graph.size(),0);for(auto n:graph)for(int neigh:n)degrees[neigh]++;return degrees;}bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) {vector<unordered_set<int>> graph=makegraph(numCourses,prerequisites);vector<int> degrees=compute_degrees(graph);for(int i=0;i<numCourses;i++){int j=0;for(j;j<numCourses;j++)if(!degrees[j]) break;if(j==numCourses) return false;degrees[j]=-1;for(int neigh:graph[j])degrees[neigh]--;}return true;}
};

我的解法

class Solution {
public:bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) {vector<unordered_set<int>>work(numCourses,unordered_set<int>());for(auto i:prerequisites){//邻接矩阵初始化work[i.first].insert(i.second);}unordered_set<int>needRid;//初始化剩余课程for(int i=0;i<numCourses;++i){needRid.insert(i);}while(!needRid.empty()){bool flag=false;for(auto i:needRid){if(work[i].empty()){needRid.erase(i);for(auto j:needRid){work[j].erase(i);}flag=true;break;}}if(flag==false)return false;}return true;}
};

leetcode 207 Course Shedule相关推荐

  1. LeetCode 207. Course Schedule--有向图找环--面试算法题--DFS递归,拓扑排序迭代--Python

    题目地址:Course Schedule - LeetCode There are a total of n courses you have to take, labeled from 0 to n ...

  2. leetcode 207. Course Schedule | 207. 课程表(Java)

    题目 https://leetcode.com/problems/course-schedule/ 题解 这的道题思路,来源于数据结构中的 拓扑排序 问题,主要思路是,通过逐步遍历删除入度为 0 的节 ...

  3. LeetCode—207. 课程表

    207. 课程表 题目描述:你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 . 在选修某些课程之前需要一些先修课程. 先修课程按数组 prerequisi ...

  4. LeetCode 207. 课程表(拓扑排序)

    1. 题目 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个 ...

  5. leetcode —— 207. 课程表

    你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他 ...

  6. 用java实现课程表_Java实现 LeetCode 207 课程表

    207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...

  7. 2022-3-22 Leetcode 207.课程表

    这道题的本质上是检验是否有一个拓扑排序. 从一个节点开始,把它身边所有的节点都走一遍,看是否会出现环,如果会出现环,说明没有出现拓扑排序. class Solution {private:vector ...

  8. Leetcode 207.课程表

    课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总 ...

  9. Leetcode 207. 课程表 解题思路及C++实现

    解题思路: 这是一个判断是否是有向无环图的题,也是拓扑排序题,网上的解决方案大多是从图的角度来解释的,比较复杂,下面先不管图论的内容,直接就深度优先搜索的方法来思考. 首先是建立一个graph,有多少 ...

最新文章

  1. 非对称加密算法RSA--转
  2. MySQL--更新自增列的潜在风险
  3. java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性
  4. 安卓学习笔记08:常用布局 - 线性布局
  5. Glide 这样用,更省内存!!! 1
  6. 复旦nlp实验室 nlp-beginner 任务三:基于注意力机制的文本匹配
  7. 曼车仪表显示故障车载计算机,汽车仪表盘上的故障标志图解大全
  8. 数学连乘和累加运算符号_数学所有的公式和符号
  9. 互联网大厂数据分析面试常见问题及解法,建议收藏
  10. HttpHeaders()无法调用
  11. 集集自助服务密码重置
  12. 区块链经济学:制度加密经济学入门指南
  13. 《Java修炼指南:高频源码解析》阅读笔记一Java数据结构的实现集合类
  14. 2007年大学生电子设计大赛国赛电源类题目设计报告
  15. 德州仪器TI芯片实时监控自动抢购
  16. AWD平台搭建及遇到的问题分析
  17. 卷积神经网络调参技巧(2)--过拟合(Dropout)
  18. xml 操作unity 的文档
  19. 学计算机有名学校有哪些,计算机学校哪所有名?
  20. Sql Server 中 mdf和ldf

热门文章

  1. 在线文档查看方案- 易度云查看
  2. 埃及分数怎么计算java_JAVA代码—算法基础:埃及分数问题
  3. 遥感测深方法综述(三)机载雷达测深系统关键参数
  4. php中求解二元一次方程,C#二元一次方程参数求解
  5. 【UML】——交互图
  6. 掌握在Rational Rose中绘制时序图(交互图)的操作方法
  7. Linux服务器部署mono+jexus发布asp.net网站
  8. 构建磷脂双份子层(二)
  9. 滑动验证码-网易云盾初使用
  10. 带注释_合工大数据结构课设Chord网络的模拟(90分)