• [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:

    1. The integer n is in the range [1, 1000] and k 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/

  • 相关阅读:
    oracle lengthb
    layui-rp
    1709052基于框架新建 子项目
    echar 常用单词
    Leetcode 481.神奇字符串
    Leetcode 480.滑动窗口中位数
    Leetcode 479.最大回文数乘积
    Leetcode 477.汉明距离总和
    Leetcode 476.数字的补数
    Leetcode 475.供暖气
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7076540.html
Copyright © 2020-2023  润新知