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

思路:判断有向无环图,BFS

先把图画出来,用二维数组,relationMap[i][j]表示从i到j是不是依赖关系,并且算出每个节点的入度数,即每个课程依赖课程的数量,之后再去用BFS判断是否存在环

class Solution {
public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {if(prerequisites.empty())return true;int result = 0;vector<int> counts(numCourses,0);vector<vector<int>> relationMap(numCourses,vector<int>(numCourses));for(int i=0;i<prerequisites.size();++i){relationMap[prerequisites[i][1]][prerequisites[i][0]] = 1;counts[prerequisites[i][0]] +=1;}queue<int> que;for(int i=0;i<numCourses;++i){if(counts[i]==0){que.push(i);result++;}}while(!que.empty()){int top = que.front();que.pop();for(int i=0;i<numCourses;++i){if(relationMap[top][i]==1){counts[i]--;if(counts[i]==0){que.push(i);result++;}}}}return result==numCourses?true:false;}
};

课程表—leetcode207相关推荐

  1. leetcode--207. 课程表

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

  2. leetcode207. 课程表(dfs/bfs)

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

  3. LeetCode207: 课程表(字节手撕算法拓扑排序)

    文章目录 前言 正文 题干 思路 入度表(广度优先遍历) 展示 后记 前言 (与正文无关,赶时间的跳过呀!!!) 前段时间了解到了这个拓扑排序,我感觉很是陌生.一百度,绝了,数据结构都学习过,想当时数 ...

  4. 【数据结构和算法】拓扑排序(附leetcode题 207/210 课程表)

    拓扑排序: 对于有向无环图,访问当前顶点时必须 保证指向该顶点的所有顶点已经访问过 作用: 1.得到一个[拓扑序](不唯一) 2.检测[有向图]是否有环:如果有拓扑排序则无环,否则有环 (如果存在环, ...

  5. Leetcode 207.课程表

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

  6. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。...

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  7. php模拟超级课程表,一个功能完善、UI简洁的仿超级课程表的课表控件 TimetableView...

    TimetableView 一个非常漂亮的Android课程表控件,该控件支持的功能: 设置数据源 颜色设置,控件内置17种颜色 触感反馈,每种内置颜色都有对应的三个样式 日期显示与高亮 课表Item ...

  8. 课程表美化 css_通过这门11小时的免费课程学习HTML和CSS

    课程表美化 css HTML and CSS are essential skills to have for a career in web development. This eleven hou ...

  9. 一个“人工智能Python机器学习与深度学习”课程表

    简 介: 对于来自于邮件的一封Python培训课程中的内容表格进行整理,用于未来课程体系建设中的参考. 关键词: python,人工智能,深度学习,培训课程 §01 课程内容   通过邮件接收到一份关 ...

最新文章

  1. java显示链表在jtable上输出_jtable的使用精华
  2. 解决掉这些痛点和难点,让知识图谱不再是“噱头”
  3. python cgi nginx_nginx uwsgi和cgi python脚本
  4. 第九章 字符串,字符和字节
  5. react 面试题 高级_高级前端面试题目大全(一)
  6. IAR 的精确延时程序(转)
  7. 【BZOJ-3123】森林 主席树 + 启发式合并
  8. html打印不弹出对话框,javascript,_打印网页(直接打印,不弹出打印预览或打印机选择窗口),javascript - phpStudy...
  9. 日常开支记账,自动统计用它就够了
  10. NEFU锐格实验一[字符串]
  11. 啦啦啦一棵R语言圣诞树~
  12. 系统平台商家如何快速提升店铺的搜索流量
  13. 无投戎之志,愿成技术届一股清流
  14. python简单爬虫
  15. php 复制文件夹并压缩到最小_【实用】PHP实现下载与压缩文件的一些方法的封装与整理...
  16. 数睿数据深度 | 中国软件网对话数睿数据总裁刘超:深挖数据驱动、企业级无代码
  17. 昔日深圳打工妹周群飞或成中国新女首富
  18. EXTJS教程(2)
  19. 中国社交网络行业市场前景广阔,ThinkSNS助力起航
  20. 江苏机器人竞赛南航_第十届江苏省大学生机器人大赛

热门文章

  1. C语言学习之输入10个数,输出其中最大的一个数。
  2. 关于Linux的修复(重新引导)
  3. 西北工业大学复试上机
  4. 关于Python Profilers性能分析器
  5. const 内联 枚举 宏
  6. 蓝桥杯——寻找数组中的最大值
  7. 若一个月给你50000元,要你选下面一件事做,你会选?
  8. 关于scriptManager与JS代码兼容问题
  9. 【python数据挖掘课程】二十三.时间序列金融数据预测及Pandas库详解
  10. [python爬虫] 爬取图片无法打开或已损坏的简单探讨