LeetCode 1911. Maximum Alternating Subsequence Sum Solution in Java, C++, Python & More | Explanation + Code

CoderIndeed
0
1911. Maximum Alternating Subsequence Sum

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.

    <li>For example, the alternating sum of <code>[4,2,5,3]</code> is <code>(4 + 5) - (2 + 3) = 4</code>.</li>
    

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.

 

Example 1:


Input: nums = [4,2,5,3]

Output: 7

Explanation: It is optimal to choose the subsequence [4,2,5] with alternating sum (4 + 5) - 2 = 7.

Example 2:


Input: nums = [5,6,7,8]

Output: 8

Explanation: It is optimal to choose the subsequence [8] with alternating sum 8.

Example 3:


Input: nums = [6,2,1,2,4,5]

Output: 10

Explanation: It is optimal to choose the subsequence [6,1,5] with alternating sum (6 + 5) - 1 = 10.

 

Constraints:

    <li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
    
    <li><code>1 &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
    

Solutions

Solution 1

PythonJavaC++GoTypeScript
class Solution: def maxAlternatingSum(self, nums: List[int]) -> int: n = len(nums) f = [0] * (n + 1) g = [0] * (n + 1) for i, x in enumerate(nums, 1): f[i] = max(g[i - 1] - x, f[i - 1]) g[i] = max(f[i - 1] + x, g[i - 1]) return max(f[n], g[n])(code-box)

Solution 2

PythonJavaC++GoTypeScript
class Solution: def maxAlternatingSum(self, nums: List[int]) -> int: f = g = 0 for x in nums: f, g = max(g - x, f), max(f + x, g) return max(f, g)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !