Class Solution

  • All Implemented Interfaces:

    
    public final class Solution
    
                        

    1916 - Count Ways to Build Rooms in an Ant Colony\.

    Hard

    You are an ant tasked with adding n new rooms numbered 0 to n-1 to your colony. You are given the expansion plan as a 0-indexed integer array of length n, prevRoom, where prevRoom[i] indicates that you must build room prevRoom[i] before building room i, and these two rooms must be connected directly. Room 0 is already built, so prevRoom[0] = -1. The expansion plan is given such that once all the rooms are built, every room will be reachable from room 0.

    You can only build one room at a time, and you can travel freely between rooms you have already built only if they are connected. You can choose to build any room as long as its previous room is already built.

    Return the number of different orders you can build all the rooms in. Since the answer may be large, return it modulo <code>10<sup>9</sup> + 7</code>.

    Example 1:

    Input: prevRoom = -1,0,1

    Output: 1

    Explanation: There is only one way to build the additional rooms: 0 → 1 → 2

    Example 2:

    Input: prevRoom = -1,0,0,1,2

    Output: 6

    Explanation: The 6 ways are:

    0 → 1 → 3 → 2 → 4

    0 → 2 → 4 → 1 → 3

    0 → 1 → 2 → 3 → 4

    0 → 1 → 2 → 4 → 3

    0 → 2 → 1 → 3 → 4

    0 → 2 → 1 → 4 → 3

    Constraints:

    • n == prevRoom.length

    • <code>2 <= n <= 10<sup>5</sup></code>

    • prevRoom[0] == -1

    • 0 &lt;= prevRoom[i] &lt; n for all 1 &lt;= i &lt; n

    • Every room is reachable from room 0 once all the rooms are built.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
    • Field Summary

      Fields 
      Modifier and Type Field Description
    • Constructor Summary

      Constructors 
      Constructor Description
      Solution()
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
    • Method Summary

      Modifier and Type Method Description
      final Integer waysToBuildRooms(IntArray prevRoom)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait