Given numCourses and prerequisite pairs, return true if all courses can be completed. Pattern focus: Cycle Detection. This is the feasibility version of topological sorting.
numCourses = course count, prerequisites = prerequisite pairs [course, prerequisite]
true if all courses can be completed
Example 1:
Input:
numCourses = 2 prerequisites = [[1,0]]
Output:
true
Explanation:
No cycle exists, so the courses can be completed.
Example 2:
Input:
numCourses = 2 prerequisites = [[1,0],[0,1]]
Output:
false
Explanation:
A cycle makes completion impossible.
Example 3:
Input:
numCourses = 4 prerequisites = [[1,0],[2,1],[3,2]]
Output:
true
Explanation:
A chain is acyclic.