

























l、r本身没有意义,rg = r-l才有意义,我们可以设元素范围为[0, rg]。dp[i][j] = sum(dp[i - 1][1..j - 1])dp[i][j] = sum(dp[i - 1][j + 1..rg])class Solution {
private static final int MOD = 1000000007;
public int zigZagArrays(int n, int l, int r) {
int rg = r - l + 1;
int[] dp = new int[rg];
Arrays.fill(dp, 1);
long lastSum = rg;
for (int i = 1; i < n; i++) {
int[] curr = new int[rg];
long lastSumTmp = ((i & 1) == 0) ? lastSum : 0;
long currSum = 0;
for (int j = 0; j < rg; j++) {
if ((i & 1) == 0) {
lastSumTmp -= dp[j];
if (lastSumTmp < 0) {
lastSumTmp += MOD;
}
curr[j] = (int) (lastSumTmp % MOD);
} else {
curr[j] = (int) (lastSumTmp % MOD);
lastSumTmp += dp[j];
}
currSum += curr[j];
}
dp = curr;
lastSum = currSum;
}
return (int) (lastSum * 2 % 1000000007);
}
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。