Topological Order--- course schedule

Question

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.

Classification& Assumption

  • Graph Representation

    • Vertex: course

    • Edge: dependency course

High Level

  • Problem definition

    • find a topological order in a directed graph

  • choose traversal algorithm

    • dfs2 & bfs

Middle Level

Method 1

  • graph representation:

    • vertex: course, int[]

    • edge: dependency course, Set<Integer>

  • visited:

    • enum State

Method 3

  • graph representation:

    • wrapped class

      • visited?

        • enum State? or not

      • set of preCourse

      • set of nextCourse

TC & SC

  • TC: O(|V|+ |E|)

  • SC: O(|V|)

Code: Method 3:

Method 3 dfs with enum

Method 3 with bfs

Last updated