2023-07-11 Leetcode 1911 最大子序列交替和

180 阅读1分钟

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]);
    }
}