首页 > 代码库 > [leetcode-629-K Inverse Pairs Array]
[leetcode-629-K Inverse Pairs Array]
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 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 inverse pair.
Example 2:
Input: n = 3, k = 1 Output: 2 Explanation: The array [1,3,2] and [2,1,3] have exactly 1 inverse pair.
Note:
- The integer
n
is in the range [1, 1000] andk
is in the range [0, 1000].
思路:
这种求最优解的个数,而不用返回解本身的感觉好多都用动态规划,这题也不例外。
public class Solution { int mo=1000000007; public int kInversePairs(int n, int k) { int[][] f=new int[1002][1002]; f[1][0]=1; for (int i=2;i<=n;i++) { f[i][0]=1; for (int j=1;j<=k;j++) { f[i][j]=(f[i][j-1]+f[i-1][j])%mo; if (j>=i) f[i][j]=(f[i][j]-f[i-1][j-i]+mo)%mo; } } return f[n][k]; } }
参考自:
https://leetcode.com/kakahiguain/
[leetcode-629-K Inverse Pairs Array]
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。