课程表(拓扑排序)
目录
Problem:
思路
注意拓扑排序最好是邻接表(哈系表实现),并用队列处理后续入度为0的点
解题方法
描述你的解题方法
复杂度
时间复杂度:
添加时间复杂度, 示例: \(O(n)\)
空间复杂度:
添加空间复杂度, 示例: \(O(n)\)
Code
class Solution:
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
if not prerequisites:
return True
def get_zero(numCourses, prerequisites, temp):
= []
queue
for prerequisite in prerequisites:
0]] += 1
temp[prerequisite[
for i in range(len(temp)):
if temp[i] == 0:
queue.append(i)
return queue
= [0 for _ in range(numCourses)]
temp
= get_zero(numCourses, prerequisites, temp)
queue
if queue == []:
return False
from collections import defaultdict
= defaultdict(list)
d
for prerequisite in prerequisites:
1]].append(prerequisite[0])
d[prerequisite[
while queue:
= queue.pop(0)
idx
= d[idx]
nexs
if nexs:
for nex in nexs:
-= 1
temp[nex]
if temp[nex] == 0:
queue.append(nex)
-= 1
numCourses
return numCourses == 0