1916. Count Ways to Build Rooms in an Ant Colony LeetCode Solution
In this guide, you will get 1916. Count Ways to Build Rooms in an Ant Colony LeetCode Solution with the best time and space complexity. The solution to Count Ways to Build Rooms in an Ant Colony problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Count Ways to Build Rooms in an Ant Colony solution in C++
- Count Ways to Build Rooms in an Ant Colony solution in Java
- Count Ways to Build Rooms in an Ant Colony solution in Python
- Additional Resources
Problem Statement of Count Ways to Build Rooms in an Ant Colony
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 109 + 7.
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
2 <= n <= 105
prevRoom[0] == -1
0 <= prevRoom[i] < n for all 1 <= i < n
Every room is reachable from room 0 once all the rooms are built.
Complexity Analysis
- Time Complexity: O(n)
- Space Complexity: O(h)
1916. Count Ways to Build Rooms in an Ant Colony LeetCode Solution in C++
class Solution:
def waysToBuildRooms(self, prevRoom: list[int]) -> int:
kMod = 1_000_000_007
graph = collections.defaultdict(list)
for i, prev in enumerate(prevRoom):
graph[prev].append(i)
def dfs(node: int) -> tuple[int, int]:
if not graph[node]:
return 1, 1
ans = 1
l = 0
for child in graph[node]:
temp, r = dfs(child)
ans = (ans * temp * math.comb(l + r, r)) % kMod
l += r
return ans, l + 1
return dfs(0)[0]
/* code provided by PROGIEZ */
1916. Count Ways to Build Rooms in an Ant Colony LeetCode Solution in Java
N/A
// code provided by PROGIEZ
1916. Count Ways to Build Rooms in an Ant Colony LeetCode Solution in Python
N/A
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.