Problem: 1911. 最大子序列交替和
思路
没什么思路,没往DP想,不过以后看到子序列就可以联想构造以子序列最后一个元素结尾的dp了。
解题方法
但凡能想到DP,只要写出状态转移方程即可
Code
class Solution {
public long maxAlternatingSum(int[] nums) {
int n = nums.length;
long[] f = new long[n+1];
long[] g = new long[n+1];
// f[i]代表以下标i-1的元素结尾的子序列,最后一个元素奇数下标时的最大交替和
// g[i]为最后一个元素为偶数下标时的最大交替和
for (int i = 1; i <= n; i++) {
f[i] = Math.max(g[i-1] - nums[i-1], f[i-1]);
g[i] = Math.max(f[i-1] + nums[i-1], g[i-1]);
}
return Math.max(f[n], g[n]);
}
}