Class Solution
-
- All Implemented Interfaces:
public final class Solution3577 - Count the Number of Computer Unlocking Permutations.
Medium
You are given an array
complexityof lengthn.There are
nlocked computers in a room with labels from 0 ton - 1, each with its own unique password. The password of the computerihas a complexitycomplexity[i].The password for the computer labeled 0 is already decrypted and serves as the root. All other computers must be unlocked using it or another previously unlocked computer, following this information:
You can decrypt the password for the computer
iusing the password for computerj, wherejis any integer less thaniwith a lower complexity. (i.e.j < iandcomplexity[j] < complexity[i])To decrypt the password for computer
i, you must have already unlocked a computerjsuch thatj < iandcomplexity[j] < complexity[i].
Find the number of permutations of
[0, 1, 2, ..., (n - 1)]that represent a valid order in which the computers can be unlocked, starting from computer 0 as the only initially unlocked one.Since the answer may be large, return it modulo 10<sup>9</sup> + 7.
Note that the password for the computer with label 0 is decrypted, and not the computer with the first position in the permutation.
Example 1:
Input: complexity = 1,2,3
Output: 2
Explanation:
The valid permutations are:
0, 1, 2
0, 2, 1
Example 2:
Input: complexity = 3,3,3,4,4,4
Output: 0
Explanation:
There are no possible permutations which can unlock all computers.
Constraints:
<code>2 <= complexity.length <= 10<sup>5</sup></code>
<code>1 <= complexityi<= 10<sup>9</sup></code>
-
-
Constructor Summary
Constructors Constructor Description Solution()
-
Method Summary
Modifier and Type Method Description final IntegercountPermutations(IntArray complexity)-
-
Method Detail
-
countPermutations
final Integer countPermutations(IntArray complexity)
-
-
-
-