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

【力扣hot100题】(052)课程表

什么人一学期要上2000节课啊jpg

看了非常久都没思路,主要是数据结构还没复习到图论,根本没思路怎么储存一个图……

唯一记得的就是两种存储方法,一种是二维数组法,记录每一条边的有无,一种是只记录有的边,适合于边比较少的情况。

但是两种记录方法在这好像都不太行。

最终还是看了答案。

记录两个东西,一是每一个节点的入度(就是需要上完多少节课才能上当前这节课),一是每个节点出去的线(就是必须上完这节课可以上的其他课)。

遍历整个数组,记录完这两个东西之后,再设置一个队列,记录目前正在上的课。

先将目前能上的课加入队列内(度为0的所有课),然后如果队列不空,就踢出队列的头元素,将头元素出去的线连接的课的出度减一,如果出度为零就加入队列尾部。

这个过程中记录从栈中踢出的课,最终判断课数是否等于课的总数,即位最终结果。

class Solution {
public:
    bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
        vector<vector<int>> connect(numCourses,vector<int>{});
        int degree[2000];
        for(int i=0;i<prerequisites.size();i++){
            connect[prerequisites[i][1]].push_back(prerequisites[i][0]);
            degree[prerequisites[i][0]]++;
        }
        int result=0;
        queue<int> school;
        for(int i=0;i<numCourses;i++) if(degree[i]==0) school.push(i);
        while(!school.empty()){
            int clas=school.front();
            school.pop();
            result++;
            for(int i=0;i<connect[clas].size();i++){
                degree[connect[clas][i]]--;
                if(degree[connect[clas][i]]==0) school.push(connect[clas][i]);
            }
        }
        return result==numCourses;
    }
};

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

相关文章:

  • 零基础快速部署网站:使用宝塔面板一键安装 LNMP/LAMP 环境实战教程
  • 从零用java实现 小红书 springboot vue uniapp (11)集成AI聊天机器人
  • WPF 登录页面
  • 基于 SpringBoot 的社区维修平台
  • SQL Server安装后 Reporting Services 配置失败
  • Linux终端命令学习笔记(一)
  • 【含文档+PPT+源码】基于SpringBoot+Vue旅游管理网站
  • Geek Uninstaller 卸载工具-小巧便捷高效 Windows中文版
  • Python爬虫第1节-HTTP基本原理
  • python连接PostgreSQL 数据库操作类优化
  • Pycharm v2024.3.4 Windows Python开发工具
  • MinIO中的纠删码是什么
  • 正则入门到精通
  • 基于 LangChain 搭建简单 RAG 系统
  • Mysql 中的两阶段提交
  • HTML应用指南:利用POST请求获取三大运营商5G基站位置信息(一)
  • 2025-04-04 Unity 网络基础5——TCP分包与黏包
  • Windows 安装和使用 ElasticSearch
  • Git提交本地项目到Github
  • vue+form实现flappybird
  • 迅饶科技X2Modbus网关-GetUser信息泄露漏洞
  • Mysql 中 B 树 vs B+ 树
  • SQL Server 2022 脏读问题排查与思考
  • HTML5 vs HTML 和 CSS3 vs CSS:全面对比
  • Spring Boot 中使用 Redis:从入门到实战
  • Websoft9分享:在数字化转型中选择开源软件可能遇到的难题
  • 神经网络能不能完全拟合y=x² ???
  • WinForm真入门(7)——Button控件详解
  • 京东运维面试题及参考答案
  • k8s进阶之路:本地集群环境搭建