Leetcode1462. 课程表 IV

2024-03-06 11:44
文章标签 iv 课程表 leetcode1462

本文主要是介绍Leetcode1462. 课程表 IV,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Every day a Leetcode

题目来源:1462. 课程表 IV

解法1:拓扑排序

在这里插入图片描述

代码:

/** @lc app=leetcode.cn id=1462 lang=cpp** [1462] 课程表 IV*/// @lc code=start// 拓扑排序(广度优先搜索)class Solution
{
public:vector<bool> checkIfPrerequisite(int numCourses, vector<vector<int>> &prerequisites, vector<vector<int>> &queries){// 邻接矩阵vector<vector<int>> graph(numCourses, vector<int>());// 入度数组vector<int> inDegree(numCourses, 0);vector<vector<bool>> isPre(numCourses, vector<bool>(numCourses, false));// 初始化邻接矩阵和入度数组for (vector<int> &p : prerequisites){int from = p[0], to = p[1];graph[from].push_back(to);inDegree[to]++;}queue<int> q;// 把入度为 0 的节点(即没有前置课程要求)放在队列中for (int i = 0; i < inDegree.size(); i++)if (inDegree[i] == 0)q.push(i);while (!q.empty()){// 每次从队列中获得节点,我们将该节点放在排序的末尾,// 并且把它指向的课程的入度各减 1int u = q.front();q.pop();for (auto &v : graph[u]){// 存在一条 u->v 边isPre[u][v] = true;// 更新所有 i->u->v 的路径for (int i = 0; i < numCourses; i++)isPre[i][v] = isPre[i][v] | isPre[i][u];inDegree[v]--;// 有课程的所有前置必修课都已修完(即入度为 0),// 我们把这个节点加入队列中if (inDegree[v] == 0)q.push(v);}}vector<bool> ans;for (auto &query : queries){int from = query[0], to = query[1];ans.push_back(isPre[from][to]);}return ans;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(numCourses3),其中 numCourses 为课程数。其中通过计算矩阵 isPre 的时间复杂度为 O(numCourses2×numCourses)=O(numCourses3),构建有向图的复杂度为 O(numCourses+n),处理每一个查询的复杂度为 O(1),共有 m 个查询,所以总的查询时间复杂度为 O(m)。

空间复杂度:O(numCourses2+n),其中 numCourses 为课程数,n 为题目给出的先决条件的数目,主要为构建有向图和矩阵 isPre 的空间开销。

这篇关于Leetcode1462. 课程表 IV的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779960

相关文章

【python因果推断库7】使用 pymc 模型的工具变量建模 (IV)2

目录 与普通最小二乘法 (OLS) 的比较 应用理论:政治制度与GDP 拟合模型:贝叶斯方法  多变量结果和相关性度量 结论 与普通最小二乘法 (OLS) 的比较 simple_ols_reg = sk_lin_reg().fit(X.reshape(-1, 1), y)print("Intercept:", simple_ols_reg.intercept_, "Bet

HTML 图像 表格 图像映射 实际应用-菜谱、课程表

html图片、表格显示实例代码: <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title> 第三讲代码 </title></head><body>图片:<br><!--打开一张图片,src 指 "source"即源属性 值是图像的 URL 地址,图片既可以是本地

【python因果推断库6】使用 pymc 模型的工具变量建模 (IV)1

目录 使用 pymc 模型的工具变量建模 (IV) 使用 pymc 模型的工具变量建模 (IV) 这份笔记展示了一个使用工具变量模型(Instrumental Variable, IV)的例子。我们将会遵循 Acemoglu, Johnson 和 Robinson (2001) 的一个案例研究,该研究尝试解开强大的政治机构对于以国内生产总值(GDP)衡量的经济生产力的影响。本示例借鉴

网络层 IV(ARP、DHCP、ICMP)【★★★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、地址解析协议(ARP)(★★) 在局域网中,由于硬件地址已固化在网卡上的 ROM 中,因此常常将硬件地址称为物理地址。因为在局域网的 MAC 帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为 MAC 地址。即物理地址、硬件地址和 MAC 地址常常作为同义词出现。 1. IP 地址与 MAC 地址 从层次的角度看,

力扣207-课程表

题目 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程  bi 。 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1

秋招突击——算法练习——8/26——图论——200-岛屿数量、994-腐烂的橘子、207-课程表、208-实现Trie

文章目录 引言正文200-岛屿数量个人实现 994、腐烂的橘子个人实现参考实现 207、课程表个人实现参考实现 208、实现Trie前缀树个人实现参考实现 总结 引言 正文 200-岛屿数量 题目链接 个人实现 我靠,这道题居然是腾讯一面的类似题,那道题是计算最大的岛屿面积,如果当时没做出来,现在得哭死!好在做出来了!这道题单纯使用回溯实现的,然后修改一下地图的坐标

Leetcode面试经典150题-188.买卖股票的最佳时机IV

解法都在代码里,不懂就留言或者私信,这个稍微难点,我提供了两种解法 /**基本的动态规划求解的过程 */public static int maxProfit2(int k, int[] prices) {/**题目给的数组不会为null,这里习惯性的健壮性判断如果交易日小于2,不可能获得任何的利润 */if(prices == null || prices.length < 2) {retu

Python | Leetcode Python题解之第377题组合总和IV

题目: 题解: class Solution:def combinationSum4(self, nums: List[int], target: int) -> int:dp = [1] + [0] * targetfor i in range(1, target + 1):for num in nums:if num <= i:dp[i] += dp[i - num]return dp

C++ | Leetcode C++题解之第377题组合总和IV

题目: 题解: class Solution {public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target + 1);dp[0] = 1;for (int i = 1; i <= target; i++) {for (int& num : nums) {if (num <= i && d

【Hot100】LeetCode—207. 课程表

目录 1- 思路有向图+记录入度数组+出度列表 2- 实现⭐207. 课程表——题解思路 3- ACM 实现 题目连接:207. 课程表 1- 思路 有向图+记录入度数组+出度列表 根据输入① 构造遍历构造入度数组② 构造出度列表根据入度数组为 0 的数 加入到 队列中,进行处理 2- 实现 ⭐207. 课程表——题解思路 class Solution