0
点赞
收藏
分享

微信扫一扫

629. K Inverse Pairs Array

_LEON_ 2022-08-03 阅读 69


Given two integers n and k, find how many different arrays consist of numbers from 1 to n such that there are exactly k inverse pairs.

We define an inverse pair as following: For ith and jth element in the array, if i < j and a[i] > a[j] then it’s an inverse pair; Otherwise, it’s not.

Since the answer may be very large, the answer should be modulo 109 + 7.

Example 1:

Input: n = 3, k = 0
Output: 1
Explanation:
Only the array [1,2,3] which consists of numbers from 1 to 3 has exactly 0

Example 2:

Input: n = 3, k = 1
Output: 2
Explanation:
The array [1,3,2] and [2,1,3] have exactly 1

Note:
The integer n is in the range [1, 1000] and k is in the range [0, 1000].

class Solution {
public int kInversePairs(int n, int k) {
long[][] dp = new long[n+1][k+1];

for(int i=0; i<=n; i++)
dp[i][0] = 1;

for(int i=1; i<=n; i++)
for(int j=1; j<=k; j++) {
dp[i][j] = dp[i][j-1]+dp[i-1][j];
if(j-i >= 0) dp[i][j] -= dp[i-1][j-i];
dp[i][j] += 1000000007;
dp[i][j] %= 1000000007;
}

return (int) dp[n][k];
}
}


举报

相关推荐

0 条评论