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

面试150 课程表

在这里插入图片描述

思路

该题等价于判断一个有向图中是否存在环。我们将课程视为图中的节点,先修课[a,b]表示一条从b指向a的有向边(必须先学b才能学a)。然后,我们要用拓扑排序,统计每门课的入度(有多少先学的课程),将所有入度为0的课程加入队列,完成的课程自增,并继续更新后续的入读。如果完成的课程数目等于指定的numcourse,说明无环,课程可以完成,否则说明存在循环依赖,无法完成所有课程。

class Solution:def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:indegree=[0]*numCoursesgraph=defaultdict(list)for x,y in prerequisites:graph[y].append(x)indegree[x]+=1 #入度自增#建立映射queue=deque([i for i in range(numCourses) if indegree[i]==0])#关键是判断有无环complete=0#入度为0的建立while queue:course=queue.popleft()complete+=1for neighbor in graph[course]:indegree[neighbor]-=1if indegree[neighbor]==0:queue.append(neighbor)return complete==numCourses
http://www.lryc.cn/news/593068.html

相关文章:

  • 基于Python的口腔正畸健康教育聊天机器人开发与评估研究
  • 大语言模型置信度增强实战指南
  • Android Crash监控
  • 嵌入式硬件中电感的基本原理与实现详解
  • 神经网络:从模式组合到多层神经网络的进化
  • 爬虫逆向之JS混淆案例(全国招标公告公示搜索引擎 type__1017逆向)
  • 电商商品综合排序:从需求分析到实时计算的全方位指南
  • 【RK3576】【Android14】Android平台构建
  • Kotlin main函数
  • TCP 和 UDP 在创建套接字(Socket)时的区别
  • 深入解析文件操作(上)- 二进制文件和文本文件,流的概念,文件的打开和关闭
  • Error:HTTP Status 405 - HTTP method POST is not supported by this URL
  • ENSP路由综合实验 + 思科(cisco)/华为(ensp)链路聚合实验
  • 如何理解华为横向虚拟化CSS+iStack
  • 历史数据分析——国药现代
  • Datawhale AI数据分析 作业
  • 字节跳动开源Seed-X 7B多语言翻译模型:28语种全覆盖,性能超越GPT-4、Gemini-2.5与Claude-3.5
  • [Python] -实用技巧10- 时间处理:datetime 和 time 模块入门
  • Java脚本API参数传递机制详解
  • 内容产品生态全解析:从形态演变到用户角色的深度洞察
  • 小架构step系列19:请求和响应
  • 2025年医疗人工智能发展现状
  • 张量交换维度(转置),其实是交换了元素的排列顺序
  • 最新版vscode 连接ubuntu 18.04 保姆级教程
  • 什么是 Git 的补丁 patch?如何在 Git 中创建和应用补丁?
  • 8. 如何减少回流重绘
  • CAN通信协议入门
  • FPGA自学——二选一多路选择器
  • 【图像处理基石】什么是小波变换?
  • 【专题一】双指针