Back to all solutions

#1911 - Maximum Alternating Subsequence Sum

Problem Description

The alternating sum of a 0-indexed array is defined as the sum of the elements at even indices minus the sum of the elements at odd indices.

  • For example, the alternating sum of [4,2,5,3] is (4 + 5) - (2 + 3) = 4.

Given an array nums, return the maximum alternating sum of any subsequence of nums (after reindexing the elements of the subsequence).

A subsequence of an array is a new array generated from the original array by deleting some elements (possibly none) without changing the remaining elements' relative order. For example, [2,7,4] is a subsequence of [4,2,3,7,2,1,4] (the underlined elements), while [2,4,2] is not.

Solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var maxAlternatingSum = function(nums) {
  let result = 0;
  let oddSum = 0;

  for (const num of nums) {
    const prevEven = result;
    result = Math.max(result, oddSum + num);
    oddSum = Math.max(oddSum, prevEven - num);
  }

  return result;
};