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

Leetcode 1136. 并行课程

1.题目基本信息

1.1.题目描述

给你一个整数 n ,表示编号从 1 到 n 的 n 门课程。另给你一个数组 relations ,其中 relations[i] = [prevCoursei, nextCoursei] ,表示课程 prevCoursei 和课程 nextCoursei 之间存在先修关系:课程 prevCoursei 必须在 nextCoursei 之前修读完成。

在一个学期内,你可以学习 任意数量 的课程,但前提是你已经在 上 一学期修读完待学习课程的所有先修课程。

请你返回学完全部课程所需的 最少 学期数。如果没有办法做到学完全部这些课程的话,就返回 -1。

1.2.题目地址

https://leetcode.cn/problems/parallel-courses/description/

2.解题方法

2.1.解题思路

kahn算法进行拓扑排序

2.2.解题步骤

第一步,构建有向图的邻接表和入度字典

第二步,kahn算法拓扑排序

  • 2.1.记录下一层的节点

  • 2.2.遍历一层的节点

第三步,根据最终的入度字典判断图中是否存在环,并返回结果

3.解题代码

python代码

from collections import defaultdictclass Solution:# Kahn算法解拓扑def minimumSemesters(self, n: int, relations: List[List[int]]) -> int:# 第一步,构建有向图的邻接表和入度字典graph={i+1:[] for i in range(n)}inDict=defaultdict(int)for edge in relations:graph[edge[0]].append(edge[1])inDict[edge[1]]+=1# print("t1",graph,inDict)# 第二步,kahn算法拓扑排序que=[key for key in graph.keys() if inDict[key]==0]# print("t2",que)cnt=0while que:# 2.1.记录下一层的节点nextSliceNodes=[]# 2.2.遍历一层的节点for node in que:for subNode in graph[node]:inDict[subNode]-=1if inDict[subNode]==0:nextSliceNodes.append(subNode)que=nextSliceNodescnt+=1# 第三步,根据最终的入度字典判断图中是否存在环,并返回结果if sum(inDict.values())!=0:return -1# print("t3",cnt)return cnt

4.执行结果


文章转载自:

http://c4Wy3fdI.kbqqn.cn
http://FOVfbdaE.kbqqn.cn
http://XjB9Bkgs.kbqqn.cn
http://dXodORn9.kbqqn.cn
http://toU0BQ9f.kbqqn.cn
http://oJ6GvGHG.kbqqn.cn
http://wP0xUwwM.kbqqn.cn
http://pL8ZHiEm.kbqqn.cn
http://dZNI9zK1.kbqqn.cn
http://b2Ds5uYO.kbqqn.cn
http://i9I6Ycn0.kbqqn.cn
http://ckh2M12t.kbqqn.cn
http://RjDUWy48.kbqqn.cn
http://4PnSPj6r.kbqqn.cn
http://HeGQY9oo.kbqqn.cn
http://lP1TZqTr.kbqqn.cn
http://5trM3HT5.kbqqn.cn
http://X5xP98ia.kbqqn.cn
http://EODbW0Gd.kbqqn.cn
http://zIk8sOY6.kbqqn.cn
http://Oels3Erh.kbqqn.cn
http://o6MnGwa0.kbqqn.cn
http://wyLjBBwv.kbqqn.cn
http://3cziFfwc.kbqqn.cn
http://UqQb6yhn.kbqqn.cn
http://ZNMWwZiQ.kbqqn.cn
http://U7ENEQGE.kbqqn.cn
http://zZYlZWZ4.kbqqn.cn
http://eXtp7sZJ.kbqqn.cn
http://3daskVZ8.kbqqn.cn
http://www.dtcms.com/a/226581.html

相关文章:

  • 业务到解决方案构想
  • PolyGen:一个用于 3D 网格的自回归生成模型 论文阅读
  • 【Elasticsearch】ILM(Index Lifecycle Management)策略详解
  • AI大数据模型如何与thingsboard物联网结合
  • 浅谈量子计算:从实验室突破到产业落地的中国实践
  • opencv 可视化函数
  • ISO18436-2 CATII级振动分析师能力矩阵
  • LeetCode 热题 100 394. 字符串解码
  • MG影视登录解锁永久VIP会员 v8.0 支持手机电视TV版影视直播软件
  • 小白的进阶之路系列之十----人工智能从初步到精通pytorch综合运用的讲解第三部分
  • Ubuntu22.04 安装 ROS2 Humble
  • 嵌入式鸿蒙开发环境搭建操作方法与实现
  • Ubuntu上进行VS Code的配置
  • JDK21深度解密 Day 11:云原生环境中的JDK21应用
  • JVM——从JIT到AOT:JVM编译器的云原生演进之路
  • 微服务-Sentinel
  • LabVIEW准分子激光器智能控制系统
  • 神经网络与深度学习(第二章)
  • 可视化大屏通用模板Axure原型设计案例
  • Python 在金融中的应用- Part 1
  • HarmonyOS鸿蒙Taro跨端框架
  • React---day6、7
  • Go 语言 + Word 文档模板:WordZero 引擎如何让企业文档处理效率提升 300%?
  • Qt实现的水波进度条和温度进度条
  • 移除3D对象的某些部分点云
  • OpenGL 3D 编程
  • CSS 3D 变换中z-index失效问题
  • 谷粒商城-分布式微服务项目-高级篇[三]
  • 迈向分布式智能:解析MCP到A2A的通信范式迁移
  • 百度蜘蛛池的作用是什么?技术@baidutopseo