Leetcode编程练习:课程编排

力扣SQL经典真题全解:从青铜到王者的进阶之路 资源类型推荐内容适用阶段书籍《SQL 必知必会》青铜→黄金官网文档PostgreSQL 窗口函数详解铂金→钻石实战平台LeetCode SQL 专项练习全阶段性能工具钻石→超神。 阅读详情

题目原文:(id=210)

There are a total of n courses you have to take, labeled from 0 to n - 1.

Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]

Given the total number of courses and a list of prerequisite pairs, return the ordering of courses you should take to finish all courses.

There may be multiple correct orders, you just need to return one of them. If it is impossible to finish all courses, return an empty array.

For example:

2, [[1,0]]

There are a total of 2 courses to take. To take course 1 you should have finished course 0. So the correct course order is [0,1]

4, [[1,0],[2,0],[3,1],[3,2]]

There are a total of 4 courses to take. To take course 3 you should have finished both courses 1 and 2. Both courses 1 and 2 should be taken after you finished course 0. So one correct course order is [0,1,2,3]. Another correct ordering is[0,2,1,3].

简单来说,就是输入一些课程的先后修的关系,要求找到一种可行的修课程的顺序,是有向无环图拓扑排序的一个典型运用。首先在输入时把边表转化为邻接矩阵,同时求出(初始化)各个顶点的入度(也就是每一门课程参与前要修完的课程种类数),如果没有入度为0的点,则肯定没有合法的解,否则将入度为0的顶点存储在一个队列中。然后将队列中顶点逐个取出,把所有当前顶点指向的顶点的入度减1,如果它们变成0则放到队列当中,直到所有元素都出队。顶点出队的顺序显然就是图的一个拓扑排序。这个算法时间复杂度为O(E)

vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) {
        int n = numCourses;
		vector<vector<int> > adj(n);
		vector<int> indegree(n, 0);
		for (int i = 0;i < prerequisites.size();i++) {
			adj[prerequisites[i].second].push_back(prerequisites[i].first);
			indegree[prerequisites[i].first]++;
		}
		vector<int> seq;
		queue<int> open;
		for (int i = 0;i < n;i++) {
			if (indegree[i] == 0) {
				open.push(i);
				seq.push_back(i);
			}
		}
		while (open.size()) {
			int pos = open.front();
			open.pop();
			for (int i = 0;i < adj[pos].size();i++) {
				int nw = adj[pos][i];
				indegree[nw]--;
				if (indegree[nw] == 0) {
					open.push(nw);
					seq.push_back(nw);
				}
			}
		}
		if (seq.size() == n) return seq;
		else return vector<int>();
    }


力扣,什么是扣子搭建? 本文主要探讨了力扣平台和扣子AI开发平台的区别与应用。力扣是一个算法题库和技术交流平台,提供在线竞赛功能,无需本地环境即可参与。扣子(Coze)则是字节跳动的AI应用开发平台,支持零代码/低代码方式构建AI智能体,适用于创建对话机器人、智能客服等工作流。文章还讨论了如何结合Python和深度学习技术,特别是在计算机视觉和心理学领域,开发自定义AI插件。虽然当前插件精度仍需提升,但展现了AI技术在专业领域的应用潜力。两个平台都采用网页端操作,但分别面向算法竞赛和AI应用开发两个不同领域。 阅读详情

相关推荐

编程题练习卷怎么设计?从核心题型拆解到高效复盘指南

编程能力的提升,关键在于建立系统化的解题思维,而非盲目刷题。从基础语法、数据结构到异步并发与网络编程,每一层都需要有针对性的训练。一套设计合理的编程题练习卷,能帮助学习者从点状知识构建起网状关联,通过难度梯度与题型配比,全面检验真实工程能力。无论是自学入门、面试冲刺还是团队带教,掌握练习卷的选题逻辑与复盘方法,都能有效将题目转化为可迁移的实战技能。本文围绕练习卷的设计原则、核心题型拆解及复盘技巧展开,提供一套可复用的训练框架,助你真正吃透每一道题。

weixin_33785108的博客 282

207. Course Schedule

There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pai...

weixin_41704428的博客 203

破解自学编程的困境:难点分析与应对策略【共创】

自学编程的过程中,许多人面临着学习路径不系统、信息过载和选择过多等挑战,这些因素常常导致失去动力,甚至中途放弃。然而,通过制定明确的学习目标、选择高质量的学习资源、构建系统化的学习路径以及定期评估和调整学习计划,可以有效应对这些困难。管理时间、加入学习社区、通过项目实践巩固所学知识,也有助于保持动力。最终,灵活调整学习策略并适应技术发展,将帮助你在编程学习的道路上持续前进,避免陷入“从入门到放弃”的困境。

一键难忘的博客 3701

图的一些算法题

  leetcode 210 There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is ex...

chent86的博客 1929

CTFshow MISC入门实战:010Editor+TweakPNG解决PNG隐写难题(附完整脚本)

本文详细介绍了在CTFshow MISC比赛中,如何利用010Editor和TweakPNG两款专业工具构建高效的PNG隐写分析工作流。文章从PNG文件结构解析入手,通过实战案例演示了如何协同使用010Editor进行二进制侦察与结构分析,以及使用TweakPNG进行数据块的精准编辑与删除,并最终提供了自动化分析脚本,帮助选手系统性地解决PNG隐写难题。

weixin_29252171的博客 75

基于立创·天猛星MSPM0G3507的简易PID电机控制入门项目实战

本文详细介绍了基于立创·天猛星MSPM0G3507开发板的简易PID电机控制入门项目实战。从硬件选型、电路设计、PCB布局,到软件编程中的编码器读取、PID算法实现与调参,手把手教你完成一个带屏幕显示的电机定速与定距控制项目,是学习嵌入式开发和经典PID控制算法的绝佳实践。

weixin_42596011的博客 510

算法练习5:leetcode习题207. Course Schedule

文章目录题目算法思路C++代码 题目 There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is e...

m0_37779608的博客 326

Python RK3588 MPP 8路视频硬解码!全体目光向我看齐!

本文重写了官方demo、加入了Zlmediakit进行拉流并通过pybind11将代码封装成so库,现在,在python中直接通过import的方式,就能完成基础的拉流解码操作,目前支持8路拉流解码!!!

m0_46303486的博客 4880

中山大学算法课程题目详解(第四周)

问题描述: There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is ex

weimumu0515的博客 388

DDS器件原理与应用(AD9833 AD9834)

是DDS的核心组成部分,用于实现相位的累加,并输出相应的幅值。相位累加器由M位宽加法器和M位宽寄存器组成,通过时钟控制,将上一次累加结果反馈到加法器输入端实现累加功能,从而使每个时钟周期内的相位递增数为,并取相位累加结果作为地址输出给ROM查找表部分。DDS的相位信息被存放在累加寄存器中,虽然幅值和相位不是线性关系,但寄存器累加值和相位可以是线性关系,很容易用寄存器的累加值表达相位信息。

m0_49968063的博客 6445

详解如何用爬虫工具批量采集阿里巴巴批发网商品数据

本文主要介绍如何使用后羿采集器的智能模式,免费采集阿里巴巴批发网商品的批发价格、发货时间、是否代发等信息。 采集字段: 商品标题、商品链接、图片链接、标签1、标签2、标签3、价格、30天成交数、 评价、店铺 功能点目录: 如何对采集字段进行配置 如何采集列表+详情页类型网页 采集结果预览: 下面我们来详细介绍一下如何免费采集1688批发网的商品数据,我们以“羽绒服女”为例,具体步骤如下: 步骤一...

weixin_43777427的博客 1万+

210. Course Schedule II(Leetcode每日一题-2020.05.17)

Problem There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1] Given the total number of courses and a l

Bryan要加油 474

Livox MID-360与FAST-LIO2实战:从驱动部署到参数调优的完整指南

激光雷达惯性里程计(LIO)是机器人定位与建图(SLAM)领域的核心技术,它通过紧耦合融合激光雷达点云与惯性测量单元(IMU)数据,实现高精度、低漂移的位姿估计。其核心原理在于利用IMU的高频数据预测运动,并用激光雷达的精确测距信息进行校正与优化,从而在快速运动或特征缺失场景下保持鲁棒性。这项技术的工程价值在于为自动驾驶、移动机器人及三维重建提供了可靠的前端里程计解决方案。针对Livox MID-360固态雷达与FAST-LIO2这一热门组合,其应用场景广泛覆盖了室内外导航与地图构建。本文聚焦于**驱动部署

weixin_29997523的博客 446

Python新手必备:5大编程练习平台深度评测与高效学习路径

编程学习的关键在于实践,而选择合适的练习平台是构建扎实编程能力的基础。对于Python初学者而言,在掌握变量、循环、函数等基础语法后,通过结构化练习来巩固知识、培养算法思维至关重要。有效的练习不仅能加深对核心数据结构(如列表、字典)的理解,更能训练将实际问题转化为代码的抽象能力,这是从理论迈向工程实践的核心环节。针对这一需求,市面上涌现了多种风格的编程练习平台,例如侧重算法与数据结构系统性训练的LeetCode,以及强调游戏化、即时反馈与社区互动的Codewars。这些平台通过精心设计的题目和交互机制,为学

weixin_34348805的博客 358

3.摄像头组件- CVP (ISP)

本文介绍 车载摄像头组件-ISP

2401_83458819的博客 1617

深度解析机器人关节位置环控制:从理论到实践

本文系统阐述了机器人关节位置环控制的核心原理与实现方法。首先介绍了关节控制的基础框架,阐明位置环在闭环控制中的关键作用。随后深入解析PID控制算法原理,包括比例、积分、微分项的功能与参数整定原则。在软件实现部分,提供了模块化设计思路和Python伪代码示例,强调实时性保障和异常处理机制。文章还包含典型面试问题解答和应用案例,展示如何通过参数优化将定位精度提升20倍。最后指出未来发展趋势将聚焦算法自适应性和系统稳健性。全文兼顾理论深度与实践指导,为开发者提供从基础到进阶的完整技术路线图。

郑伟强dev的专栏 51

leetcode 210.课程表 II

要学习课程 3,你应该先完成课程 1 和课程 2。输入:numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]]因此,正确的课程顺序为 [0,1]。因此,一个正确的课程顺序是 [0,1,2,3]。另一个正确的排序是 [0,2,1,3]。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1]。输入:numCourses = 2, prerequisites = [[1,0]]输出:[0,2,1,3]

weixin_43343408的博客 625

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

力扣刷题路线

结合高频题、经典题和算法思想学习建议,分阶段从基础到进阶编排,覆盖所有核心标签,并标注题号与学习方法。:画图模拟快慢指针移动,如移动零时快指针探路、慢指针标记非零位置。:括号生成时,左括号数不能超过n,右括号数不能超过左括号数。:LCA问题中,若左右子树均含目标节点,则当前节点为祖先。:终止条件、递归调用、返回值,如二叉树深度递归返回。:掌握虚拟头节点、递归反转、环形检测。:掌握索引操作、快慢指针、滑动窗口。:熟悉括号匹配、单调栈、层序遍历。:熟悉反转、哈希统计、回文处理。

FAQEW的博客 1819

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

编程题练习卷设计指南:从语法基础到工程能力评估

编程能力评估是技术成长与团队招聘中的关键环节,而一套设计合理的编程题练习卷正是实现精准评估的有效工具。从C++编程基础知识到Python输入解析与边界处理,练习卷通过分层命题覆盖语法熟练度、数据结构、算法思维与异步编程等核心维度。理解题目背后的复杂度意识与工程实践,能帮助开发者将“我觉得我会”转化为“我确实会”。无论是借助LRU缓存等高频考点训练算法思维,还是利用AI编程提示词辅助复盘,科学的刷题方法论都能显著提升学习效率。从基础语法到并发控制,从错题复盘到自动化评测,一张高质量的练习卷不仅是面试准备的利器

weixin_33907511的博客 390

LeetCode 210. 课程表 II:BFS 拓扑排序求解合法修课顺序(附 7 种语言实现)

LeetCode 210「课程表 II」是经典的图论与拓扑排序实战题:给定课程总数与先修关系,要求输出一个满足全部先修约束的学习顺序,若无解则返回空数组。本文将基于 doocs/leetcode 仓库中该题的[中文题解文档](https://link.gitcode.com/i/e0f3537dc24f3138a230480ccc0b51fa)展开,完整还原题目约束与示例,深入讲解基于队列的 Ka

gitblog_00191的博客 334

【icyle】编程小白的Leetcode之旅

学习背景 某985自动化系,有过一些编程基础。能够使用C++,Python,Matlab完成课程设计项目。 做过:学生管理系统(老常规了),控制台双人小游戏,图像处理。 学习目的 找到工作(总感觉考研没戏了)。目标是中上游互联网企业,后端开发。还得复习一下sql。 学习方法 Leetcode按顺序,每天AC一道题,因为还需要补充C++基础知识以及毕业设计。 Leetcode代码及心得汇总 这里将会用超链接的形式记录每道题的代码及心得。 题目 链接 1.两数之和 2.两数相加

icy的代码小屋 292

B站视频下载工具downkyi停更始末:8K下载为何走到仓库关闭

B站视频下载工具downkyi(哔哩下载姬)曾支持8K、HDR与杜比视界画质下载,2026年7月因收到哔哩哔哩委托发出的侵权告知函,宣布停止维护、仓库永久关闭。 ## 项目画像:B站视频下载工具downkyi替用户解决了什么 在downkyi出现之前,用户想把B站视频保存到本地,往往要跨过几道门槛:视频页面本身不提供高清资源的离线入口,网上流传的解析接口时好时坏,部分工具还捆绑额外软件。对没有

gitblog_09745的博客 663

LeetCode 207 课程表:拓扑排序与有向图环检测详解

在图论中,许多实际问题都可以抽象为有向图上的依赖关系分析。拓扑排序是处理这类问题的核心算法,它通过线性序列表达节点之间的先后约束,其关键前提是图中不能存在环。判断有向图是否有环,常用Kahn算法与深度优先搜索两种方式:前者从入度为0的节点逐层剥离,后者借助节点状态标记回边。掌握这些原理后,从软件包依赖解析、编译顺序到任务调度系统,都能快速识别并解决循环依赖问题。LeetCode 207课程表正是这一思想的经典应用,通过建图、统计入度并执行拓扑排序,即可判断全部课程能否修完。

weixin_30522983的博客 187

VibeThinker-3B编程能力测试:揭秘LeetCode周赛96.1%通过率背后的技术原理

在AI编程助手领域,一个令人瞩目的突破正在悄然发生。**VibeThinker-3B**,这个仅有30亿参数的小型语言模型,在最新的LeetCode周赛测试中实现了惊人的**96.1%通过率**,这一成绩让许多大型模型都望尘莫及。今天,我们将深入探讨这个开源项目背后的技术奥秘,了解它如何在小参数规模下实现顶尖的编程推理能力。 ## 🔍 什么是VibeThinker-3B? **VibeThi

gitblog_00511的博客 1080

LeetCode 分类练习(三):查找1

LeetCode 分类练习(三):查找1 目录LeetCode 分类练习(三):查找1一、查找的基本概念二、查找算法的评价指标三、静态查找表顺序查找(线性查找)折半查找(二分或对分查找)分块查找(块间有序,块内无序)四、哈希表的查找五、基本数据结构六、实战1(查找表)案例1: 349 Intersection Of Two Arrays 1案例2: 350 Intersection Of Two Arrays 2案例3: 242 Intersection Of Two Arrays 2案例4: 202 Ha

南有芙蕖 874

《LeetCode按公司分类题目集合使用指南》

本项目位于GitHub上,地址为:[https://github.com/jobream/Leetcode-Company-Wise-Problems](https://github.com/jobream/Leetcode-Company-Wise-Problems)。它旨在提供一个整理好的LeetCode公司特定题目的列表,主要服务于准备技术面试的开发者。项目整体结构简洁明了,侧重于方便用户查...

gitblog_00052的博客 486
上一篇: Leetcode编程练习二:求直方图中矩形最大面积
下一篇: Leetcode编程练习:火柴匹配
ether_crow
博客等级 码龄10年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值