php做网站切换语言,wordpress发不出验证邮件,linode上传wordpress,苗木网站怎么做你这个学期必须选修 numCourses 门课程#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出#xff0c;其中 prerequisites[i] [ai, bi] #xff0c;表示如果要学习课程 ai 则 必须 先学习课程 bi 。 例如记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出其中 prerequisites[i] [ai, bi] 表示如果要学习课程 ai 则 必须 先学习课程 bi 。 例如先修课程对 [0, 1] 表示想要学习课程 0 你需要先完成课程 1 。 请你判断是否可能完成所有课程的学习如果可以返回 true 否则返回 false 。 示例 1 输入numCourses 2, prerequisites [[1,0]] 输出true 解释总共有 2 门课程。学习课程 1 之前你需要完成课程 0 。这是可能的。 示例 2 输入numCourses 2, prerequisites [[1,0],[0,1]] 输出false 解释总共有 2 门课程。学习课程 1 之前你需要先完成课程 0 并且学习课程 0 之前你还应先完成课程 1 。这是不可能的。 提示 1 numCourses 1 0 5 10^5 105 0 prerequisites.length 5000 prerequisites[i].length 2 0 ai, bi numCourses prerequisites[i] 中的所有课程对 互不相同 该题目涉及到图 用一个数组记录每门课程的先导课程总有没有先导课程的课程先访问这些课程随后以这些课程为先导课程的课程减去访问过的先导课程直到无法再访问课程这时候根据访问过的课程数据是否是课程总数决定结果。
这里用到两个数据结构edges变量存放以该课程为先导课程的课程访问先导课程后就知道哪些课程要减去访问过的课程。q是一个队列存放待访问的课程。
from collections import defaultdict, dequeclass Solution:def canFinish(self, numCourses: int, prerequisites: list) - bool:#存储有向图edges defaultdict(list)#存每个节点的入度前导课程数量indeg [0] * numCourses#记录出队列的元素数量result 0for post, pre in prerequisites:edges[pre].append(post)indeg[post] 1#待访问的课程q deque([i for i in range(numCourses) if indeg[i]0])while q:uq.popleft()result 1for v in edges[u]:indeg[v] - 1if indeg[v] 0:q.append(v)return result numCourses