leetcode 207 Course Shedule
典型的拓扑排序题,用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相关推荐
- 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 ...
- leetcode 207. Course Schedule | 207. 课程表(Java)
题目 https://leetcode.com/problems/course-schedule/ 题解 这的道题思路,来源于数据结构中的 拓扑排序 问题,主要思路是,通过逐步遍历删除入度为 0 的节 ...
- LeetCode—207. 课程表
207. 课程表 题目描述:你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 . 在选修某些课程之前需要一些先修课程. 先修课程按数组 prerequisi ...
- LeetCode 207. 课程表(拓扑排序)
1. 题目 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个 ...
- leetcode —— 207. 课程表
你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他 ...
- 用java实现课程表_Java实现 LeetCode 207 课程表
207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...
- 2022-3-22 Leetcode 207.课程表
这道题的本质上是检验是否有一个拓扑排序. 从一个节点开始,把它身边所有的节点都走一遍,看是否会出现环,如果会出现环,说明没有出现拓扑排序. class Solution {private:vector ...
- Leetcode 207.课程表
课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总 ...
- Leetcode 207. 课程表 解题思路及C++实现
解题思路: 这是一个判断是否是有向无环图的题,也是拓扑排序题,网上的解决方案大多是从图的角度来解释的,比较复杂,下面先不管图论的内容,直接就深度优先搜索的方法来思考. 首先是建立一个graph,有多少 ...
最新文章
- 非对称加密算法RSA--转
- MySQL--更新自增列的潜在风险
- java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性
- 安卓学习笔记08:常用布局 - 线性布局
- Glide 这样用,更省内存!!! 1
- 复旦nlp实验室 nlp-beginner 任务三:基于注意力机制的文本匹配
- 曼车仪表显示故障车载计算机,汽车仪表盘上的故障标志图解大全
- 数学连乘和累加运算符号_数学所有的公式和符号
- 互联网大厂数据分析面试常见问题及解法,建议收藏
- HttpHeaders()无法调用
- 集集自助服务密码重置
- 区块链经济学:制度加密经济学入门指南
- 《Java修炼指南:高频源码解析》阅读笔记一Java数据结构的实现集合类
- 2007年大学生电子设计大赛国赛电源类题目设计报告
- 德州仪器TI芯片实时监控自动抢购
- AWD平台搭建及遇到的问题分析
- 卷积神经网络调参技巧(2)--过拟合(Dropout)
- xml 操作unity 的文档
- 学计算机有名学校有哪些,计算机学校哪所有名?
- Sql Server 中 mdf和ldf