Course Schedule
Learn how to solve the 'Course Schedule' problem. This detailed resource details brute force and optimized approaches.
Problem Statement
There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates that you must take course bi first if you want to take course ai.
For example, the pair [0, 1] indicates that to take course 0 you have to first take course 1.
Return True if you can finish all courses. Otherwise, return False.
Write a function canFinish(numCourses: int, prerequisites: List[List[int]]) -> bool.
- •1 <= numCourses <= 2000
- •0 <= len(prerequisites) <= 5000
- •prerequisites[i].length == 2
- •0 <= ai, bi < numCourses
Examples
numCourses = 2, prerequisites = [[1,0]]
True
To take course 1 you should have finished course 0. So it is possible.
numCourses = 2, prerequisites = [[1,0],[0,1]]
False
To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. This is a cycle and therefore impossible.
Need a Hint?
Edge Cases to Watch
- Empty list or null input variables
- Single item lists/arrays
- Extremely large input bounds causing integer or stack overflow
Ready to Solve?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.