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。

相关推荐
bybitq18 小时前
Leetcode-3780-Python
python·算法·leetcode
如何原谅奋力过但无声18 小时前
【力扣-Python-75】颜色分类(middle)
python·算法·leetcode
玖剹18 小时前
哈希表相关题目
数据结构·c++·算法·leetcode·哈希算法·散列表
练习时长一年19 小时前
LeetCode热题100(最小栈)
java·算法·leetcode
Tisfy20 小时前
LeetCode 955.删列造序 II:模拟(O(mn)) + 提前退出
算法·leetcode·字符串·题解·遍历
im_AMBER20 小时前
Leetcode 82 每个字符最多出现两次的最长子字符串 | 删掉一个元素以后全为 1 的最长子数组
c++·笔记·学习·算法·leetcode
java修仙传20 小时前
力扣hot100:旋转排序数组中找目标值
算法·leetcode·职场和发展
YGGP21 小时前
【Golang】LeetCode 287. 寻找重复数
开发语言·leetcode·golang
前端小白在前进21 小时前
力扣刷题:千位分割数
javascript·算法·leetcode
小年糕是糕手21 小时前
【C/C++刷题集】string类(一)
开发语言·数据结构·c++·算法·leetcode