leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0629.cpp (1045B)
0 class Solution {
1 static const int MOD = 1E9 + 7;
3 public:
4 int kInversePairs(int n, int k) {
5 static int dp[1001][1001];
6 memset(dp, 0x00, sizeof(dp));
8 dp[0][0] = 1;
9 for (int i = 1; i <= n; i++) {
10 for (int j = 0; j <= k; j++) {
11 dp[i][j] = (dp[i - 1][j] + (j > 0 ? dp[i][j - 1] : 0)) % MOD;
12 if (j >= i) dp[i][j] = (MOD + dp[i][j] - dp[i - 1][j - i]) % MOD;
13 }
14 }
15 return dp[n][k];
16 }
17 };
19 // Space optimized
20 class Solution {
21 static const int MOD = 1E9 + 7;
23 public:
24 int kInversePairs(int n, int k) {
25 static int dp[2][1001];
26 memset(dp, 0x00, sizeof(dp));
28 dp[0][0] = 1;
29 for (int i = 1; i <= n; i++) {
30 for (int j = 0; j <= k; j++) {
31 dp[i % 2][j] = (dp[(i - 1) % 2][j] + (j > 0 ? dp[i % 2][j - 1] : 0)) % MOD;
32 if (j >= i) dp[i % 2][j] = (MOD + dp[i % 2][j] - dp[(i - 1) % 2][j - i]) % MOD;
33 }
34 }
35 return dp[n % 2][k];
36 }
37 };