美文网首页
629. K个逆序对数组

629. K个逆序对数组

作者: 来到了没有知识的荒原 | 来源:发表于2021-09-29 09:50 被阅读0次

629. K个逆序对数组

两个算法100倍的差别。。
我要好好学算法QAQ

f[i][j]:用数字1~i,构成j个逆序对的方案数量

dp(暴力)

这傻逼写法我先试试,结果居然过了,三个循环复杂度有1e9

const int MOD = 1e9+7;
typedef long long ll;

class Solution {
public:
    int kInversePairs(int n, int k) {
        ll f[n+10][k+10];
        memset(f,0,sizeof f);
        f[0][0]=1;
        for(int i=1;i<=n;i++){
            for(int base=0;base<=k;base++){
                for(int j=0;j<=i-1;j++){
                    if(j+base<=k){
                        f[i][j+base]+=f[i-1][base];
                        f[i][j+base]%=MOD;
                    }
                }
            }
        }
        return f[n][k];
    }
};

dp + 前缀和优化

const int MOD = 1e9 + 7;
typedef long long ll;

class Solution {
 public:
  int kInversePairs(int n, int k) {
    ll f[n + 10][k + 10];
    memset(f, 0, sizeof f);
    f[0][0] = 1;
    for (int i = 1; i <= n; i++) {
      ll sum[k + 10];
      memset(sum, 0, sizeof sum);
      for (int j = 0; j <= k; j++) {
        ll right = (j - 1 >= 0) ? sum[j - 1] : 0;
        sum[j] = (f[i - 1][j] + right) % MOD;
      }
      for (int j = 0; j <= k; j++) {
        ll right = (j - i >= 0) ? sum[j - i] : 0;
        ll cur = sum[j] + MOD - right;
        f[i][j] = cur % MOD;
      }
    }
    return f[n][k];
  }
};

相关文章

  • 629. K个逆序对数组

    629. K个逆序对数组[https://leetcode-cn.com/problems/k-inverse-p...

  • ologn排序算法后的两个问题

    求一个数组的逆序数对的个数(归并排序) 求出nums里第k小的数(快速排序)

  • 8.27 - hard - 109

    629. K Inverse Pairs Array递推公式如下f(n,k) = sum(f(n-1,i)), w...

  • Java 数组的排序、逆序

    数组的排序、逆序测试数据 数组选择排序 数组冒泡排序 数组逆序

  • 逆序对 树状数组

    求逆序对除了有merge sort,还可以用树状数组比如输入数组为a,维护的树状数组为c,插入的时候,人为是c[a...

  • 数组的逆序对

    思路:归并排序每次把数组从中间拆分成两部分,先统计拆分数组内部的逆序对,再把这个数组排序,防止统计重复,最后再把拆...

  • 逆序对(lintcode第532题难度中等)

    在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的...

  • 532. 逆序对

    在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的...

  • 逆序对

    在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的...

  • iOS 枚举器NSEnumerator

    初始化一个数组用枚举器来遍历数组 获取数组的逆序枚举器(逆序输出)

网友评论

      本文标题:629. K个逆序对数组

      本文链接:https://www.haomeiwen.com/subject/szbknltx.html