Count Courses Without Taking One Course
Problem statement
Each pair [prerequisite, course] in prerequisites requires the first course to be completed before taking the second. If a course has several prerequisites, all of them must be completed. The graph has no cycles, and there may be several courses with no prerequisites.
You do not want to take avoidCourse. Return the maximum number of other courses you can complete without taking it. The avoided course itself is excluded, as is every course that depends on it directly or indirectly. Courses that are prerequisites of the avoided course may still be taken.
For this exercise, assume the available courses are exactly the names appearing in the pairs, and the avoided name is among them. Repeated copies of a pair have the same effect as one copy. Preserve course names exactly, including case and spaces.
Function
countAvailableCourses(prerequisites: String[][], avoidCourse: String) → intExamples
Example 1
prerequisites = [["Japanese 101","Japanese Culture"],["Japanese 101","Japanese 102"],["Japanese 102","Japanese 201"],["Japanese 201","Manga"],["Japanese 201","Japanese 202"],["Japanese Culture","Haiku"],["Japanese 202","Haiku"],["Japanese 202","Japanese 301"],["Japanese 301","Classical Japanese"],["Classical Japanese","Tale of Genji"],["Japanese 301","Japanese 302"]]avoidCourse = "Tale of Genji"return = 10There are eleven distinct courses. Tale of Genji has no dependent course, so only that course is excluded. All ten others can be completed first.
Example 2
prerequisites = [["Japanese 101","Japanese Culture"],["Japanese 101","Japanese 102"],["Japanese 102","Japanese 201"],["Japanese 201","Manga"],["Japanese 201","Japanese 202"],["Japanese Culture","Haiku"],["Japanese 202","Haiku"],["Japanese 202","Japanese 301"],["Japanese 301","Classical Japanese"],["Classical Japanese","Tale of Genji"],["Japanese 301","Japanese 302"]]avoidCourse = "Japanese 201"return = 3Only Japanese 101, Japanese 102, and Japanese Culture remain available. Manga, Japanese 202, Haiku, Japanese 301, Classical Japanese, Tale of Genji, and Japanese 302 all depend on Japanese 201. Haiku remains blocked even though its Japanese Culture prerequisite is available, because its Japanese 202 prerequisite is not.
Constraints
- For this exercise, assume
1 <= prerequisites.length <= 1000. - Each pair contains exactly two course names. Every name, including avoidCourse, has 1 to 50 printable ASCII characters and contains a non-space character.
- No pair has equal endpoints. The directed prerequisite graph is acyclic, and avoidCourse appears as a pair endpoint.