leetcode-210-课程表②
2024-10-07 21:09:57
题目描述:
第一次提交:
class Solution:
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
indegree = [0 for _ in range(numCourses)]
adj = [[] for _ in range(numCourses)]
for cur,pre in prerequisites:
adj[pre].append(cur)
indegree[cur] += 1
res = []
queue = []
for i in range(numCourses):
if indegree[i] == 0:
queue.append(i)
while queue:
i = queue.pop(0)
res.append(i)
for j in adj[i]:
indegree[j] -= 1
if indegree[j] == 0:
queue.append(j)
return res if len(res) == numCourses else []
方法二:dfs + 栈
class Solution:
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
def dfs(i, adjacency, flags):
if flags[i] == -1: return True
if flags[i] == 1: return False
flags[i] = 1
for j in adjacency[i]:
if not dfs(j, adjacency, flags): return False
flags[i] = -1
res.append(i)
return True
res = []
adjacency = [[] for _ in range(numCourses)]
flags = [0 for _ in range(numCourses)]
for cur, pre in prerequisites:
adjacency[pre].append(cur)
for i in range(numCourses):
if not dfs(i, adjacency, flags): return []
return res[::-1]
最新文章
- java中的String
- CountDownLatch如何使用
- RaisingStudio.PackageManager 发布 1.0版
- JavaWeb学习计划
- [iOS微博项目 - 3.0] - 手动刷新微博
- python的web压力测试工具-pylot安装使用
- javaScript(3)---语法、关键保留字及变量
- 推荐一款MongoDB的客户端管理工具--nosqlbooster
- vue入门之编译项目
- 必会SQL练习题
- Python_列表初识及操作
- 开源RabbitMQ操作组件
- Windbg在应用层调试漏洞时的应用
- nginx: [error] invalid PID number “” in “/usr/local/var/run/nginx/nginx.pid”
- 双主双写、只备份某些表且要在建表ID自增
- 5秒后跳转到另一个页面的js代码
- Spark机器学习4·分类模型(spark-shell)
- yum安装epel后报错
- 九度OJ 1180:对称矩阵 (矩阵计算)
- linux 打包 压缩
热门文章
- [已解决]报错run `npm audit fix` to fix them, or `npm audit` for details
- Aggregate report 聚合报告
- Linux 父进程发送信号杀死子进程
- session之memcache
- PC端写的API接口和手机端APP联合调试
- C#常用设计模式
- ElementUI的Loading组件 —— 想实现在请求后台数据之前开启Loading组件,请求成功或失败之后,关闭Loading组件
- BASS HOME
- thinkphp 性能调试
- CommandLineToArgvW调EXE传入参数【转载】