Leetcode 3196. Maximize Total Cost of Alternating Subarrays

  • [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。

相关推荐
DogDaoDao8 小时前
LeetCode 算法:二叉树中的最大路径和 c++
c++·算法·leetcode·二叉树·二叉树路径
可惜我是水瓶座__8 小时前
【LeetCode】螺旋矩阵
算法·leetcode·矩阵
观鉴词recommend10 小时前
【c++刷题笔记-贪心】day30:56. 合并区间 、 738.单调递增的数字
c++·笔记·算法·leetcode
音符犹如代码12 小时前
3101.力扣每日一题7/6 Java(接近100%解法)
java·数据结构·算法·leetcode
观鉴词recommend13 小时前
【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间
c++·算法·leetcode
嘿,请叫我小哥14 小时前
定个小目标之刷LeetCode热题(41)
算法·leetcode·职场和发展
Scouser_H15 小时前
二刷算法训练营Day53 | 动态规划(14/17)
算法·动态规划
__AtYou__19 小时前
Golang | Leetcode Golang题解之第220题存在重复元素III
leetcode·golang·题解
weixin_5442369919 小时前
leetcode每日一题-3033. 修改矩阵
算法·leetcode