207. 课程表
考查是否有环
class Solution:
def canFinish(self, numCourses, prerequisites):
HashMap = {}
for prerequisite in prerequisites:
start, end = prerequisite[1], prerequisite[0]
if start not in HashMap:
HashMap[start] = [end]
else:
HashMap[start].append(end)
visited = [False] * numCourses
onPath = [False] * numCourses
existCircle = False
def dfs(node):
nonlocal existCircle
if visited[node] or node not in HashMap:
return
if onPath[node] == True:
existCircle = True
return
onPath[node] = True
for nxt in HashMap[node]:
dfs(nxt)
visited[node] = True
for course in range(numCourses):
dfs(course)
return False if existCircle else True