问题描述

你这个学期必须选修 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;}
}

Leetcode 207. 课程表(值得一刷的宽搜)相关推荐

  1. LeetCode—207. 课程表

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

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

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

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

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

  4. Leetcode 207.课程表

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

  5. leetcode —— 207. 课程表

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

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

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

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

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

  8. leetcode 207课程表

    class Solution { public:bool canFinish(int numCourses, vector<vector<int>>& prerequi ...

  9. LeetCode 207. 课程表(广度优先遍历)

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

  10. LeetCode 210. 课程表 II(拓扑排序)

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

最新文章

  1. 连接两个linux系统软件,【技术共享】synergy-两台电脑共享一套鼠标键盘-Linuxwindows...
  2. vs文件上传失败--超过最大字符限制
  3. myeclipse+8.6各个版本注册码(貌似8.5也可以)
  4. 大公司c#amp;.net转型java的原因有哪些?
  5. python 赋值操作的知识点
  6. 即时通讯源码_一对一视频直播系统源码是如何实现即时通讯呢?
  7. 21- vue django restful framework 打造生鲜超市 -首页商品分类显示功能
  8. MySql command line client 命令系列
  9. 关于typedef的用法总结(转)
  10. 临床医师看过来:5个理由告诉你,为什么JMP软件更适合你?
  11. 05 js面向对象(属性操作符,创建对象)
  12. android隐藏其他应用图标,【Android】隐藏app图标以及隐式启动其他APP
  13. 修改Window的hosts文件提示“该文件被其他程序占用,无法修改问题”解决方案
  14. 基础快读(新手入门)(C++实现)
  15. heading pitch bank
  16. 怎样保留应届生身份?应届生的身份有多重要?
  17. 由百家讲坛的《大隋风云-之流星王朝》想到的
  18. 解决sourcetree修改账号和fatal:Authentication failed
  19. 计算机c语言基础字符,2008计算机二级考试:C语言基础教程-C语言字符型数据
  20. DJL初学者学习笔记(一):Java启动DJL控制台打印No matching cuda flavor for win found: cu65并且在线下载dll文件解决方案

热门文章

  1. JavaScript之阻止事件冒泡。
  2. 手把手教你做关键词匹配项目(搜索引擎)---- 第十一天
  3. jquerymobile多页面切换
  4. 月薪1万的乞丐--转载
  5. java数组程序_java数组
  6. 拓端tecdat|R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
  7. confluence统计_【漏洞预警】confluence远程代码执行漏洞(CVE-2019-3396)
  8. (5)数据结构-栈顺序存储
  9. (2)数据结构-线性表顺序存储
  10. 永久更改打开matlab时工作目录