Check Whether Every Course Can Be Completed Under Prerequisite Rules

Read the full interview experience this question came from →

Quick Overview

A graph feasibility problem: given n courses and pairs stating which course must be completed before another, decide whether every course can be finished. It tests modeling dependencies as a directed graph, recognizing circular requirements, and handling courses that fall into separate, disconnected groups.

Check Whether Every Course Can Be Completed Under Prerequisite Rules

Company: ByteDance

Role: Software Engineer

Category: Coding & Algorithms

Difficulty: medium

Interview Round: Technical Screen

There are `n` courses, labeled `0` to `n - 1`. Each pair `[a, b]` in `prerequisites` means that course `b` must be completed before course `a` can be taken. Courses are taken one at a time, and each course is taken once. Return `True` if it is possible to complete all `n` courses while respecting every prerequisite, and `False` otherwise. ### Function Signature ```python def can_finish_all(n: int, prerequisites: list[list[int]]) -> bool: ``` ### Rules - A course can be taken only after every course it depends on has been completed. - The answer is `True` exactly when some order of all `n` courses, with each course appearing once, places `b` before `a` for every pair `[a, b]`. Otherwise the answer is `False`. - A course that appears in no pair has no prerequisites and can be taken at any time. - If even one course can never be completed, the answer is `False`, even when every other course can be completed. ### Constraints - `1 <= n <= 2000` - `0 <= len(prerequisites) <= 5000` - Each pair is `[a, b]` with `0 <= a < n`, `0 <= b < n` and `a != b`. - No pair appears more than once. ### Examples **Example 1** ```text Input: n = 4, prerequisites = [[1, 0], [2, 0], [3, 1], [3, 2]] Output: True ``` Courses 1 and 2 each need course 0, and course 3 needs both 1 and 2. Taking the courses in the order 0, 1, 2, 3 respects every pair. **Example 2** ```text Input: n = 3, prerequisites = [[0, 1], [1, 2], [2, 0]] Output: False ``` Course 0 needs 1, course 1 needs 2, and course 2 needs 0, so none of them can be taken first. **Example 3** ```text Input: n = 5, prerequisites = [[1, 0], [2, 1], [3, 4], [4, 3]] Output: False ``` Courses 0, 1 and 2 can be taken in that order, but course 3 needs 4 and course 4 needs 3, so neither of those two can ever be taken.

Overview: A graph feasibility problem: given n courses and pairs stating which course must be completed before another, decide whether every course can be finished. It tests modeling dependencies as a directed graph, recognizing circular requirements, and handling courses that fall into separate, disconnected groups.

Read the full ByteDance Software Engineer interview experience this question came from

|Home/Coding & Algorithms/ByteDance
ByteDance logo
ByteDance
Aug 17, 2026
mediumSoftware EngineerTechnical ScreenCoding & Algorithms
0
0

There are n courses, labeled 0 to n - 1. Each pair [a, b] in prerequisites means that course b must be completed before course a can be taken. Courses are taken one at a time, and each course is taken once.

Return True if it is possible to complete all n courses while respecting every prerequisite, and False otherwise.

Function Signature

def can_finish_all(n: int, prerequisites: list[list[int]]) -> bool:

Rules

  • A course can be taken only after every course it depends on has been completed.
  • The answer is True exactly when some order of all n courses, with each course appearing once, places b before a for every pair [a, b] . Otherwise the answer is False .
  • A course that appears in no pair has no prerequisites and can be taken at any time.
  • If even one course can never be completed, the answer is False , even when every other course can be completed.

Constraints

  • 1 <= n <= 2000
  • 0 <= len(prerequisites) <= 5000
  • Each pair is [a, b] with 0 <= a < n , 0 <= b < n and a != b .
  • No pair appears more than once.

Examples

Example 1

Input:  n = 4, prerequisites = [[1, 0], [2, 0], [3, 1], [3, 2]]
Output: True

Courses 1 and 2 each need course 0, and course 3 needs both 1 and 2. Taking the courses in the order 0, 1, 2, 3 respects every pair.

Example 2

Input:  n = 3, prerequisites = [[0, 1], [1, 2], [2, 0]]
Output: False

Course 0 needs 1, course 1 needs 2, and course 2 needs 0, so none of them can be taken first.

Example 3

Input:  n = 5, prerequisites = [[1, 0], [2, 1], [3, 4], [4, 3]]
Output: False

Courses 0, 1 and 2 can be taken in that order, but course 3 needs 4 and course 4 needs 3, so neither of those two can ever be taken.

Submit Your Answer to Earn 20XP

Sign in to leave a comment

Loading comments...