Class Solution
-
- All Implemented Interfaces:
public final class Solution3193 - Count the Number of Inversions.
Hard
You are given an integer
nand a 2D arrayrequirements, where <code>requirementsi = end<sub>i</sub>, cnt<sub>i</sub></code> represents the end index and the inversion count of each requirement.A pair of indices
(i, j)from an integer arraynumsis called an inversion if:i < jandnums[i] > nums[j]
Return the number of permutations
permof[0, 1, 2, ..., n - 1]such that for allrequirements[i], <code>perm0..end<sub>i</sub></code> has exactly <code>cnt<sub>i</sub></code> inversions.Since the answer may be very large, return it modulo <code>10<sup>9</sup> + 7</code>.
Example 1:
Input: n = 3, requirements = \[\[2,2],0,0]
Output: 2
Explanation:
The two permutations are:
[2, 0, 1][1, 2, 0]
Example 2:
Input: n = 3, requirements = \[\[2,2],1,1,0,0]
Output: 1
Explanation:
The only satisfying permutation is
[2, 0, 1]:Prefix
[2, 0, 1]has inversions(0, 1)and(0, 2).Prefix
[2, 0]has an inversion(0, 1).Prefix
[2]has 0 inversions.
Example 3:
Input: n = 2, requirements = \[\[0,0],1,0]
Output: 1
Explanation:
The only satisfying permutation is
[0, 1]:Prefix
[0]has 0 inversions.Prefix
[0, 1]has an inversion(0, 1).
Constraints:
2 <= n <= 3001 <= requirements.length <= n<code>requirementsi = end<sub>i</sub>, cnt<sub>i</sub></code>
<code>0 <= end<sub>i</sub><= n - 1</code>
<code>0 <= cnt<sub>i</sub><= 400</code>
The input is generated such that there is at least one
isuch that <code>end<sub>i</sub> == n - 1</code>.The input is generated such that all <code>end<sub>i</sub></code> are unique.