- [Leetcode 3196. Maximize Total Cost of Alternating Subarrays](#Leetcode 3196. Maximize Total Cost of Alternating Subarrays)
- [1. 解题思路](#1. 解题思路)
- [2. 代码实现](#2. 代码实现)
1. 解题思路
这一题就是一个动态规划,只需要考虑每一个元素作为开始和处于序列当中的二元态即可,其中,如果处在序列当中但刚好在奇数的位置,那么两种情况刚好可以归并。
2. 代码实现
给出python代码实现如下:
python
class Solution:
def maximumTotalCost(self, nums: List[int]) -> int:
n = len(nums)
@lru_cache(None)
def dp(idx, stat):
if idx >= n:
return 0
if stat == 0:
return nums[idx] + dp(idx+1, 1)
else:
return max(nums[idx] + dp(idx+1, 1), -nums[idx] + dp(idx+1, 0))
return dp(0, 0)
提交代码评测得到:耗时881ms,占用内存287.9MB。