Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク
合計があります コース数
受講する必要があるコースのラベルは次のとおりです 0
に コース数-1
.配列が与えられます 前提条件
どこ 前提条件[i] = [a i , b i ]
あなたが しなければならない コースを取る b私
コースを受講したい場合は、まず AI
.
- たとえば、次のペア
[0, 1]
、コースを受講することを示します0
まずコースを受講する必要があります1
.
戻る 真実
すべてのコースを完了できる場合は、戻ってください。 間違い
.
例 1:
入力: コース数 = 2、前提条件 = [[1,0]] 出力: 真実 説明: 合計 2 つのコースを受講する必要があります。コース 1 を受講するには、コース 0 を完了している必要があります。
例 2:
入力: コース数 = 2、前提条件 = [[1,0],[0,1]] 出力: 間違い 説明: 合計 2 つのコースを受講する必要があります。コース 1 を受講するにはコース 0 を終了する必要があり、コース 0 を受講するにはコース 1 も終了する必要があります。つまり、不可能です。
制約:
1 <= コース数 <= 2000
0 <= prerequisites.length <= 5000
前提条件[i].length == 2
0 <= a i 、 b i < コース数
- すべてのペアの前提条件[i]は次のとおりです。 個性的.
パイソン
コレクションからインポート deque 入力からインポート リスト クラス 解決策: def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: indegree = [0] * numCourses adj = [[] for _ in range (numCourses)] for prerequisite in prerequisites: adj[prerequisite[1]].append(prerequisite[0]) indegree[prerequisite[0]] += 1 queue = deque() for i in range(numCourses): if indegree[ i] == 0:queue.append(i) nodeVisited = 0 while queue:node = queue.popleft() nodeVisited += 1 for neighbors in adj[node]: indegree[neighbor] -= 1 if indegree[neighbor] = = 0: queue.append(neighbor) return nodeVisited == numCourses