Maximum Alternating Subsequence Sum LeetCode solution in C++
1class Solution {2public:3long long dp[2][100001];4long long util(int i, vector<int> &nums, bool isPos) {5if (i >= nums.size()) return 0;6if (dp[isPos][i] != -1) return dp[isPos][i];7long long curr = (isPos ? nums[i] : -1 * nums[i]);8return dp[isPos][i] = max(curr + util(i + 1, nums, !isPos), util(i + 1, nums, isPos));9}10long long maxAlternatingSum(vector<int> &nums) {11memset(dp, -1, sizeof(dp));12return util(0, nums, true);13}14};