2025-01-23:统计逆序对的数目。用go语言,给定一个整数 n 和一个二维数组 requirements,其中每个元素 requirements[i] = [endi, cnti] 表示在要求中末尾的下标以及逆序对的数量。
在一个整数数组 nums 中,如果存在一个下标对 (i, j),使得 i < j 且 nums[i] > nums[j],则称这对 (i, j) 为逆序对。
任务是返回所有可能的数组排列 perm = [0, 1, 2, ..., n - 1] 的数量,使得对于所有的 requirements,都满足 perm[0..endi] 中恰好有 cnti 个逆序对。
由于结果可能会非常大,请将结果对 1000000007 取余后返回。
2 <= n <= 300。
1 <= requirements.length <= n。
requirements[i] = [endi, cnti]。
0 <= endi <= n - 1。
0 <= cnti <= 400。
输入保证至少有一个 i 满足 endi == n - 1 。
输入保证所有的 endi 互不相同。
输入:n = 3, requirements = [[2,2],[0,0]]。
输出:2。
解释:
两个排列为:
[2, 0, 1]
前缀 [2, 0, 1] 的逆序对为 (0, 1) 和 (0, 2) 。
前缀 [2] 的逆序对数目为 0 个。
[1, 2, 0]
前缀 [1, 2, 0] 的逆序对为 (0, 2) 和 (1, 2) 。
前缀 [1] 的逆序对数目为 0 个。
相似问题