当前位置: 首页 > news >正文

LeetCode:207. 课程表

class Solution {

public:

    // 记录递归堆栈的结点

    vector<bool> onpath;

    vector<bool> visited;

    // 记录是否成环

    bool hasCircle = false;

    bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {

        auto graph=buildGraph(numCourses,prerequisites);

        //设置大小为numCourse的数组

        onpath=vector<bool>(numCourses);

        visited=vector<bool>(numCourses);

        for(int i=0;i<numCourses;i++){

            //遍历图中所有节点

            traverse(graph,i);

        }

        //只要没有循环依赖就可以完成所有课程

        return !hasCircle;

    }

    void traverse(vector<vector<int>>& graph,int s){

        if(hasCircle){

            //说明已经成环

            return ;

        }

        if(onpath[s]){

            hasCircle=true;

            return ;

        }

        if(visited[s]){

            return;

        }

        //记录已经访问过结点s

        onpath[s]=true;

        //将已经访问过过的结点s标记

        visited[s]=true;

        for(int t:graph[s]){

            traverse(graph,t);

        }

        onpath[s]=false;

    }

    vector<vector<int>>buildGraph(int numCourses, vector<vector<int>>& prerequisites){

        //图中共有numCourses

        vector<vector<int>>graph(numCourses);

        for(int i=0;i<numCourses;i++){

            graph[i]=vector<int>();

        }

        for(auto& edge:prerequisites){

            int from=edge[1],to=edge[0];

            graph[from].push_back(to);

        }

        return graph;

    }

};

http://www.dtcms.com/a/507001.html

相关文章:

  • Oracle EBS ERP开发——报表生成Excel标准模板设计
  • CANoe基础讲解02:掌握CANoe Trace窗口
  • Kanass V1.3.3版本发布,支持在线安装与消息配置
  • 第十七篇:本地模型部署:使用DeepSeek开源模型进行离线推理
  • 【STM32项目开源】基于STM32的智能家居环境监测系统
  • 串口AT指令控制EC20连接MQTT服务器
  • 如何实现企业网站推广的系统性网站建设腾讯课堂
  • 全网营销型的网站wordpress 开源吗
  • 常见Linux环境变量深度解析
  • Jetson上安装TensorRT
  • 开发避坑指南(62):解决URLDecoder:Illegal hex characters in escape (%) pattern 异常
  • DAX分列年月日
  • 【开题答辩实录分享】以《自然灾害隐患点管理信息系统》为例进行答辩实录分享
  • dpdk如何与内核进行交互——vdev的用法
  • 丝杆模组如何满足高精度加工设备的高要求?
  • 咋做网站泉州网络推广专员
  • 【STL——vector容器】
  • 如何做网站流量统计网站建设公司中企动力
  • 练习python题目小记(三)
  • 技术视角下的财务自动化:如何用最优TCO评估RPA机器人的性价比?
  • C++ 模板再升级:非类型参数、特化技巧(含全特化与偏特化)、分离编译破解
  • 京东客网站怎么做网站开发公司创业策划
  • 线性表实战:顺序表与链表的奥秘
  • 模块的波动对整个系统的影响
  • Linux服务器编程实践58-getnameinfo函数:通过socket地址获取主机名与服务名
  • Kubernetes(三) Pod 详解与 YAML 配置实战指南
  • 做网上购物网站网络培训seo
  • 电梯门禁系统及机器人乘梯功能的安装调试需要电梯公司技术人员全程配合,这主要由电梯设备的特殊性、安全规范要求及系统集成的复杂性决定。以下是具体原因及配合内容:
  • Windows安全基线、账户密码安全、账户锁定策略、审核策略
  • 介绍一下 辜朝明 的大衰退 理论