每日一题【day2】

2023-10-28

题目链接
在这里插入图片描述

思路:对于两门课之间的约束关系,很容易联想到图,我们可以将课抽象为节点,将约束抽象为一条有向边,可以用有向图的相关算法解决问题。拓扑排序正好可以解决这一问题。

算法:拓扑排序
一个合法的选课序列就是一个拓扑序,拓扑序是指一个满足有向图上,不存>在一条边出节点在入节点后的线性序列,如果有向图中有环,就不存在拓扑>序。可以通过拓扑排序算法来得到拓扑序,以及判断是否存在环。
拓扑排序步骤:
建图并记录所有节点的入度。
将所有入度为0的节点加入队列。
取出队首的元素now,将其加入拓扑序列。
访问所有now的邻接点nxt,将nxt的入度减1,当减到0后,将nxt加入队列。
重复步骤3、4,直到队列为空。
如果拓扑序列个数等于节点数,代表该有向图无环,且存在拓扑序。

class Solution {
public:
    bool canFinish(int numCourses, vector<vector<int>> &prerequisites) {
        vector<unordered_multiset<int>> route(numCourses);
        vector<int> degree(numCourses, 0);
        for(int i = 0; i < prerequisites.size(); ++ i) 
        {
            route[prerequisites[i][1]].insert(prerequisites[i][0]);
            degree[prerequisites[i][0]] ++;
        }
        queue<int> qu;
        for (int i = 0; i < numCourses; ++i)
        {
            if (degree[i] == 0)
                qu.push(i);
        }
        int num=0;
        while (!qu.empty()) {
            int tmp= qu.front(); 
            qu.pop();
            num++;
            for(auto it = route[tmp].begin(); it != route[tmp].end(); ++ it) {
                degree[*it]--;
                if (degree[*it] == 0) 
                {
                    qu.push(*it);
                }
            }
        }
        return num == numCourses;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每日一题【day2】 的相关文章

  • Asp.net core默认路由

    简化版Startup code public void ConfigureServices IServiceCollection services services AddMvc public void Configure IApplica
  • 当从后台工作程序发生事件时,XlCall.Excel(XlCall.xlcCalculateNow) 抛出 XlCallException

    我有一个 ExcelFunction 来排队一些计算 ExcelFunction public static void QueueCalcs takes ranges var calcRequests builds list of calc
  • Nullable 是不可能的,为什么不呢? [复制]

    这个问题在这里已经有答案了 如果这是一个愚蠢的问题 请原谅 我正在尝试更好地理解 Net 中的 Nullable 类型 从我从 Microsoft 源代码 使用 ReSharper 中注意到的内容 我了解到 Nullable 是一个结构 而
  • 通过另一个列表更新列表(linq)

    我有类 Data 的对象列表 如下所示 class Data int code string name DateTime date update 我还有另一个课程列表 例如 class RefCodes int old code int n
  • 当其源是 https uri 时如何使 wpf MediaElement 播放

    在 wpf 独立应用程序 exe 中 我在主窗口中包含了 MediaElement
  • 从另一个 FORM 中取回隐藏的 FORM

    我有两种形式Form1 and Form2 我正在打开Form2 from Form1 on button Click Form2 obj2 new Form2 this Visible false obj2 Show 然后我想回来Form
  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • libtool 在 Ubuntu 13.04 上构建 thrift 0.9.1 时出错

    在 Ubuntu 13 04 上构建 thrift 0 9 1 支持 C C java C perl python 时出现此错误 configure 不带任何选项运行 make 不带任何选项运行 Making all in test mak
  • C# Outlook 从收件人获取 CompanyName 属性

    我目前正在使用 C 编写 Outlook 2010 AddIn 我想要的是从我从 AppointmentItem 中提取的 Recipient 对象中获取 CompanyName 属性 因此 有了 AppointmentItem 的收件人
  • 如何调整 Windows 窗体以适应任何屏幕分辨率?

    我知道这是重复的问题 但我检查了所有其他相关问题 他们的答案没有帮助 结果仍然与屏幕截图 2 中所示相同 我是 C Windows 窗体新手 如截图1所示 我有Form1有一些控件 每组控件都放在一个面板中 我在 PC1 中设计了应用程序
  • C++中的类要具备什么条件才能成为容器?

    我是 C 编程新手 偶然发现了这个术语containers举例如下vector deque map etc 一个企业的最低要求应该是什么class应该满足被称为container in C 我将从 范围 这个概念开始 Range 只有两个方
  • 为什么 C# 中同一类型的隐式和显式运算符不能共存? [复制]

    这个问题在这里已经有答案了 为什么同一类中两个相同类型的运算符 显式和隐式 不能共存 假设我有以下内容 public class Fahrenheit public float Degrees get set public Fahrenhe
  • 如何调试在发布版本中优化的变量

    我用的是VS2010 我的调试版本工作正常 但我的发布版本不断崩溃 因此 在发布版本模式下 我右键单击该项目 选择 调试 然后选择 启动新实例 此时我看到我声明的一个数组 int ma 4 1 2 8 4 永远不会被初始化 关于可能发生的事
  • 关闭整数的最右边设置位

    我只需要关闭最右边的设置位即可 我的方法是找到最右边位的位置 然后离开该位 我编写这段代码是为了这样做 int POS int n int p 0 while n if n 2 0 p else break n n 2 return p i
  • 提升mapped_file_source、对齐方式和页面大小

    我正在尝试在性能很重要的上下文中解析一些大小高达几百兆字节的文本文件 因此我使用 boostmapped file source 解析器期望源以空字节终止 因此我想检查文件大小是否是页面大小的精确倍数 如果是 则使用较慢的非内存映射方法 我
  • 从点云检测平面集

    我有一组点云 我想测试3D房间中是否有角落 所以我想讨论一下我的方法 以及在速度方面是否有更好的方法 因为我想在手机上测试它 我将尝试使用霍夫变换来检测线 然后我将尝试查看是否有三条线相交 并且它们也形成了两个相交的平面 如果点云数据来自深
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 将 2 个字节转换为整数

    我收到一个 2 个字节的端口号 最低有效字节在前 我想将其转换为整数 以便我可以使用它 我做了这个 char buf 2 Where the received bytes are char port 2 port 0 buf 1 port
  • 在 Qt 中播放通知(频率 x)声音 - 最简单的方法?

    Qt 5 1 或更高版本 我需要播放频率为 x 的通知声音 n 毫秒 如果我能像这样组合音调那就太好了 1000Hz 持续 2 秒 然后 3000Hz 持续 1 秒 最简单的方法是使用文件 WAV MP3 例如如此处所述 如何用Qt播放声音
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex

随机推荐

  • 配置Tomcat成为系统服务

    配置Tomcat成为系统服务 这里已tomcat6为例 下载Zip版Tomcat 选择 32 bit Windows zip pgp md5 下载解压文件到指定目录 如 D ProgramFiles Tomcat6 进入D ProgramF
  • Python 微信公众号文章爬取

    Python 微信公众号文章爬取 一 思路 二 接口分析 三 实现 第一步 第二步 1 请求获取对应公众号接口 取到我们需要的fakeid 2 请求获取微信公众号文章接口 取到我们需要的文章数据 四 总结 一 思路 我们通过网页版的微信公众
  • Docker搭建私有仓库

    Docker搭建私有仓库 一 私有仓库搭建 1 拉取私有仓库镜像 docker pull registry 2 启动私有仓库容器 docker run name registry p 5000 5000 registry 3 打开浏览器输入
  • Python判断一个整数是否是回文数的三种方法

    方法一 逐位判断 原理 用一个while循环 将一个数每次都取出首位和末位 判断是否相等 只要有一次不相等退出即可 回文数的判断条件 加入一个变量位数 如果这个数是奇数 位数为1时 即最中间那一位数 此时退出即可 同理 偶数 位数为0时 退
  • LIN诊断实现MCU本地OTA升级

    一 目标 通过PC端上位机实现MCU本地的OTA升级 本篇文章对实现的目的 需要用到的第三方工具 LIN诊断帧 升级协议 MCU端升级过程以及PC端升级过程做详细说明 二 目的 最近在做MCU项目时需要将样机寄给客户进行验证 在客户的验证过
  • 二叉树 level order 遍历问题汇总

    一 如何确定层结束 1 维护一个levelEnd 如果当前结点等于level end 更新levelEnd 为queue back 注意先判断queue是否empty 最后一层结束后 queue就空了 2 维护一个curLevelNum 和
  • 【Kubernetes】Kubernetes的yaml文件中command的使用

    command就是将命令在创建的容器中执行 有这些命令去完成一些工作 command用法和dockerfile中的cmd差不多 command可以单独写 也可以分成command和参数args 可以参考之前的CMD去理解 例如下面的写法都可
  • 超分辨率重建——(一)何为超分和分类

    图像超分辨重建 图像超分辨率 SR 是计算机视觉中提高图像和视频分辨率的一类重要技术 图像超分辨率重建 Super resolution Reconstruction SR 是由一张或多张低分辨率图像得到高分辨率图像的过程 存在问题 传统图
  • 刷脸支付营销广告一站式便捷的应用

    刷脸支付收银系统的应用让消费者自助购物 正规购物过程更加便捷了 同时对于商户来说 还可以通过收银系统的会员管理 会员管理 营销 会员加广告以及服务 为商户提供了收银 店铺管理 营销加广告等一站式便捷的闭环应用 刷脸支付 智慧医疗 智慧校园
  • ETL与ELT理解

    ETL ETL Extract Transform Load 用来描述将数据从来源端经过抽取 Extract 转换 Transform 加载 Load 至目的端的过程 ETL模式适用于小数据量集 如果在转换过程中需要处理的数据量达到千万上亿
  • yum使用报错:Cannot find a valid baseurl for repo: base/$releasever/x86_64

    转自 https www cnblogs com qa freeroad p 13888980 html 背景 项目有几台机器 centos7 时间不准 为了让时间能够定时同步 需要安装ntpdate 然而 我在使用yum安装ntpdate
  • Call From hadoop102/192.168.10.102 to hadoop102:8020 failed on connection exception: java.net.Connec

    错误 which no hbase in opt modules jdk1 8 0 212 bin opt modules jdk1 8 0 212 bin usr local bin usr bin usr local sbin usr
  • STM32 电机教程 24 - ST MCLIB实战之无感变绝对式位置传感器

    前言 上一节给大讲演示了如何用ST MotorControl Workbench创建基本STM32F103C8T6芯片的FOC工程并根据实际电路成功创建了工程 但是实际电路使用的是绝对式磁编码器作为电机位置及速度检测传感器 而ST Moto
  • 学习笔记 JavaScript ES6 箭头函数

    学习内容 this指向定义时所在的对象 而不是调用时所在的对象 不可以当作构造函数 不可以使用arguments对象 1 this指向定义时所在的对象 而不是调用时所在的对象 先来回顾一下ES5当中如何定义函数 function sum x
  • SQL Server是什么?SQL Server详细介绍

    一 SQL Server数据库简介 SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统 RDBMS 现在是全世界主流数据库之一 SQL Server数据库具备方便使用 可伸缩性好 相关软件集成程度高等优势 能
  • centos7修改服务器密码忘记,Centos7忘记root密码怎么修改

    Centos7忘记root密码怎么修改 一 reboot重启机器 当出现引导界面时 按e进入内核编辑界面 二 往下翻 到LANG zh CN UTF 8后面添加 rd break 别忘了空格 三 修改完成后 按下Ctrl X组合键来运行这个
  • gcc,pkg-config,libyaml and etc..

    order of lib imports in gcc lib are importants the order of lib imports in gcc lib are importants I used to have this co
  • Java并发编程实战——你真的了解final吗?

    文章目录 final的简介 平时使用的final final修饰变量 final修饰方法 final修饰类 多线程中你真的了解final吗 final域基本数据类型的重排序规则 写final域的重排序规则 读final域的重排序规则 fin
  • AV1:为互联网提供开放、免费的视频编解码工具

    从学术研究到进入工业界 Zoe Liu一直在算法和音视频领域 目前在谷歌编解码团队为编解码器AV1做开发支持 Zoe畅谈了评定编解码器的标准 以及AV1的最新进度 本文是 下一代编码器 系列采访之一 欢迎自荐或推荐技术人加入 下一代编码器
  • 每日一题【day2】

    题目链接 思路 对于两门课之间的约束关系 很容易联想到图 我们可以将课抽象为节点 将约束抽象为一条有向边 可以用有向图的相关算法解决问题 拓扑排序正好可以解决这一问题 算法 拓扑排序 一个合法的选课序列就是一个拓扑序 拓扑序是指一个满足有向