← 返回 snapchat 的题目列表Course Schedule (Cycle Detection in Directed Graph)
类型:online_judge
Problem: Course Schedule (Can You Finish All Courses?)
You are given an integer numCourses (course labels 0 ... numCourses-1) and an array prerequisites, where each element is [a, b] meaning to take course a, you must first take course b.
Return true if you can finish all courses. If the prerequisite graph contains a directed cycle, return false; otherwise return true.
Input
Integer numCourses
2D array prerequisites, each element is a length-2 array [a, b]
Output
Boolean indicating whether all courses can be finished
Constraints / Scale
1 <= numCourses <= 2 * 10^5
0 <= prerequisites.length <= 2 * 10^5
0 <= a, b < numCourses
a != b
Target time complexity: O(V + E).
Examples
numCourses = 2, prerequisites = [[1,0]] → true
numCourses = 2, prerequisites = [[1,0],[0,1]] → false
numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]] → true
numCourses = 3, prerequisites = [[0,1],[1,2],[2,0]] → false
numCourses = 5, prerequisites = [] → true
Example
Input
2
1
1 0
Output
true