Leetcode 207. 课程表(值得一刷的宽搜)
问题描述
你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。
在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]
给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?
##示例
示例 1:
输入: 2, [[1,0]]
输出: true
解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。
示例 2:
输入: 2, [[1,0],[0,1]]
输出: false
解释: 总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。这是不可能的。
提示:
输入的先决条件是由 边缘列表 表示的图形,而不是 邻接矩阵 。详情请参见图的表示法。
你可以假定输入的先决条件中没有重复的边。
1 <= numCourses <= 10^5
代码
class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {
if(numCourses<0)return false;if(numCourses==0)return true;Queue<Integer> queue=new LinkedList<Integer>();int[] num=new int[numCourses];for(int i=0;i<prerequisites.length;i++) {if(prerequisites[i][1]!=-1)num[prerequisites[i][1]]++;}for(int i=0;i<num.length;i++) {if(num[i]==0&&!queue.contains(i)) {queue.add(i);}}if(queue.size()==0)return false;int size=0;while(queue.size()>0) {int temp=queue.poll();size++;for(int i=0;i<prerequisites.length;i++) {if(prerequisites[i][0]==temp) {num[prerequisites[i][1]]--;if(num[prerequisites[i][1]]==0) {queue.add(prerequisites[i][1]);}}}}if(size==numCourses)return true;return false;}
}
![](/assets/blank.gif)
Leetcode 207. 课程表(值得一刷的宽搜)相关推荐
- LeetCode—207. 课程表
207. 课程表 题目描述:你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 . 在选修某些课程之前需要一些先修课程. 先修课程按数组 prerequisi ...
- LeetCode 207. 课程表(拓扑排序)
1. 题目 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个 ...
- 用java实现课程表_Java实现 LeetCode 207 课程表
207. 课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] ...
- Leetcode 207.课程表
课程表 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总 ...
- leetcode —— 207. 课程表
你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他 ...
- 2022-3-22 Leetcode 207.课程表
这道题的本质上是检验是否有一个拓扑排序. 从一个节点开始,把它身边所有的节点都走一遍,看是否会出现环,如果会出现环,说明没有出现拓扑排序. class Solution {private:vector ...
- Leetcode 207. 课程表 解题思路及C++实现
解题思路: 这是一个判断是否是有向无环图的题,也是拓扑排序题,网上的解决方案大多是从图的角度来解释的,比较复杂,下面先不管图论的内容,直接就深度优先搜索的方法来思考. 首先是建立一个graph,有多少 ...
- leetcode 207课程表
class Solution { public:bool canFinish(int numCourses, vector<vector<int>>& prerequi ...
- LeetCode 207. 课程表(广度优先遍历)
题目描述 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程 ...
- LeetCode 210. 课程表 II(拓扑排序)
1. 题目 现在你总共有 n 门课需要选,记为 0 到 n-1. 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课 ...
最新文章
- 连接两个linux系统软件,【技术共享】synergy-两台电脑共享一套鼠标键盘-Linuxwindows...
- vs文件上传失败--超过最大字符限制
- myeclipse+8.6各个版本注册码(貌似8.5也可以)
- 大公司c#amp;.net转型java的原因有哪些?
- python 赋值操作的知识点
- 即时通讯源码_一对一视频直播系统源码是如何实现即时通讯呢?
- 21- vue django restful framework 打造生鲜超市 -首页商品分类显示功能
- MySql command line client 命令系列
- 关于typedef的用法总结(转)
- 临床医师看过来:5个理由告诉你,为什么JMP软件更适合你?
- 05 js面向对象(属性操作符,创建对象)
- android隐藏其他应用图标,【Android】隐藏app图标以及隐式启动其他APP
- 修改Window的hosts文件提示“该文件被其他程序占用,无法修改问题”解决方案
- 基础快读(新手入门)(C++实现)
- heading pitch bank
- 怎样保留应届生身份?应届生的身份有多重要?
- 由百家讲坛的《大隋风云-之流星王朝》想到的
- 解决sourcetree修改账号和fatal:Authentication failed
- 计算机c语言基础字符,2008计算机二级考试:C语言基础教程-C语言字符型数据
- DJL初学者学习笔记(一):Java启动DJL控制台打印No matching cuda flavor for win found: cu65并且在线下载dll文件解决方案