文章目录

  • 210.课程表II
  • 207.课程表

210.课程表II





class Solution {// 存储有向图List<List<Integer>> edges;// 标记每个节点的状态:0=未搜索,1=搜索中,2=已完成int[] visited;// 用数组来模拟栈,下标 n-1 为栈底,0 为栈顶int[] result;// 判断有向图中是否有环boolean valid = true;// 栈下标int index;public int[] findOrder(int numCourses, int[][] prerequisites) {edges = new ArrayList<List<Integer>>();for (int i = 0; i < numCourses; ++i) {edges.add(new ArrayList<Integer>());}visited = new int[numCourses];result = new int[numCourses];index = numCourses - 1;for (int[] info : prerequisites) {edges.get(info[1]).add(info[0]);}// 每次挑选一个「未搜索」的节点,开始进行深度优先搜索for (int i = 0; i < numCourses && valid; ++i) {if (visited[i] == 0) {dfs(i);}}if (!valid) {return new int[0];}// 如果没有环,那么就有拓扑排序return result;}public void dfs(int u) {// 将节点标记为「搜索中」visited[u] = 1;// 搜索其相邻节点// 只要发现有环,立刻停止搜索for (int v: edges.get(u)) {// 如果「未搜索」那么搜索相邻节点if (visited[v] == 0) {dfs(v);if (!valid) {return;}}// 如果「搜索中」说明找到了环else if (visited[v] == 1) {valid = false;return;}}// 将节点标记为「已完成」visited[u] = 2;// 将节点入栈result[index--] = u;}
}

207.课程表

class Solution {List<List<Integer>> edges;int[] visited;boolean valid = true;public boolean canFinish(int numCourses, int[][] prerequisites) {edges = new ArrayList<List<Integer>>();for (int i = 0; i < numCourses; ++i) {edges.add(new ArrayList<Integer>());}visited = new int[numCourses];for (int[] info : prerequisites) {edges.get(info[1]).add(info[0]);}for (int i = 0; i < numCourses && valid; ++i) {if (visited[i] == 0) {dfs(i);}}return valid;}public void dfs(int u) {visited[u] = 1;for (int v: edges.get(u)) {if (visited[v] == 0) {dfs(v);if (!valid) {return;}} else if (visited[v] == 1) {valid = false;return;}}visited[u] = 2;}
}

LeetCode_图类相关推荐

  1. 轻松理解UML用例图时序图类图的教程

    摘自https://zhuanlan.zhihu.com/p/29874146 写在前面 当你老大扔给你这样的图,或者你需要完成某些功能而去看文档的时候发现以下类似这样的图会不会不(一)知(脸)所(懵 ...

  2. 2.16_vertexgraph_顶点类和图类 (更新)

    顶点类 class Vertex(object):"""顶点类"""def __init__(self, key, distance=0, ...

  3. java怎么写dnf辅助_易语言地下城与勇士辅助自动刷图类源码

    DNF辅助自动刷图类 仅供学习参考,禁止商业用途 .版本 2 .支持库 EThread .支持库 spec .程序集 自动 .子程序 自动刷图 .判断开始 (全局_总开关.自动刷图开关 = 假) 全局 ...

  4. 推荐系统-模型(一):召回模型【协同过滤类: ItemCF/UserCF】【Embedding类】【Dssm/双塔/word2vec】【图类召回算法 (Deepwalk、EGES)】

    推荐系统-召回模型:[协同过滤类: ItemCF/UserCF][Embedding类][Dssm/双塔/word2vec][图类召回算法 (Deepwalk.EGES)]

  5. PyQt5-QPainter-绘图类

    PyQt5-QPainter-绘图类 一.介绍 二.继承 三.最简单的画线代码 四.一些设置 1.setPen() 设置画笔 2.setBrush()设置笔刷 3. setFont()设置字体 4. ...

  6. 【高软作业2】:三种美图类软件的调研分析

    要求: 至少选用三款产品实际使用,并总结列举他们的基本功能特点差异(表格对比基本功能特点) 他们的目标都是盈利么?他们的目标都是赚取用户的现金么?还是别的? 对比他们的售价 这些软件是如何到你手里的( ...

  7. 2022年19款不能错过的 Google Chrome影图类工具插件

    2022年19款不能错过的 Google Chrome影图类工具插件 你知道Google Chrome是全世界最常使用的瀏覽器嗎? 大致上有6成的人使用電腦或手機的首選瀏覽器就是Chrome. 202 ...

  8. 火山引擎数智平台协助洞察美图类APP新增长,付费用户转化超过124%

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 美图类 APP 的下一个增长点在哪里? 目前,国内市场上的美图类 APP 大多都遵循着基础功能免费使用.个性化热门 ...

  9. java 图类_Java集合类,一张图说清楚!

    作者:skywang12345 https://www.cnblogs.com/skywa... 2019-03-23 10:32:24 Java集合是java提供的工具包,包含了常用的数据结构:集合 ...

最新文章

  1. Java学习_day005:循环结构
  2. 黄聪:VirtualBox 安装ghost版windows XP
  3. 小巨型计算机应用什么领域,计算机应用基础 10
  4. Docker 17.12.0 发布
  5. python3数据类型:Tuple(元组)
  6. 发票抬头是什么意思?
  7. c语言结构体实现存储信息,用C语言结构体实现通讯录
  8. kendo grid输入框验证方法
  9. 佐治亚理工学院 计算投资公开课第六周作业 投资策略分析平台
  10. phpMyAdmin链接MySQL拒接_phpmyadmin连接MySQL服务器被拒绝
  11. docker 镜像导入导出
  12. UI设计干货素材|动效导航,漂亮的悬停动效
  13. WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法
  14. 水电远程预付费管理系统
  15. 免费使用正版金山词霸2006专业版
  16. python 12306登录_Python Selenium自动登录12306官网
  17. Android手机投屏利器米卓同屏助手
  18. 极好的GoogleChrome插件下载网站(无需vpn)
  19. python求解一元二次方程考虑复数_Python学习笔记:求解一元二次方程
  20. 制作纯净系统U盘教程(详细版)

热门文章

  1. python性能优化之函数执行时间分析_python性能优化之函数执行时间分析
  2. clone远程代码 在不同电脑上git_用树莓派3搭建私有git代码仓库
  3. PR 简单使用(一)
  4. 从零入门 FreeRTOS 操作系统之创建任务流程
  5. Python爬虫开发与项目实践
  6. Java实现快速排序 Quick Sort
  7. hyperworks2017安装教程
  8. C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类1)
  9. php关联二维数组,php-检查关联二维数组
  10. 这样读源码,不牛X也难