【状态机DP】力扣1262. 可被三整除的最大和

devtools/2024/10/22 8:19:37/

给你一个整数数组 nums,请你找出并返回能被三整除的元素 最大和。

示例 1:
输入:nums = [3,6,5,1,8]
输出:18
解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和)。

示例 2:
输入:nums = [4]
输出:0
解释:4 不能被 3 整除,所以无法选出数字,返回 0。

示例 3:
输入:nums = [1,2,3,4,4]
输出:12
解释:选出数字 1, 3, 4 以及 4,它们的和是 12(可被 3 整除的最大和)。
在这里插入图片描述
动态规划

class Solution {
public:int maxSumDivThree(vector<int>& nums) {\int n = nums.size();vector<int> dp(3, INT_MIN);dp[0] = 0;for(int i = 0; i < n; i++){vector<int> g = dp;int k = nums[i] % 3;g[k%3] = max(dp[k%3], dp[0] + nums[i]);g[(1+k)%3] = max(dp[(1+k)%3], dp[1] + nums[i]);g[(2+k)%3] = max(dp[(2+k)%3], dp[2] + nums[i]);dp = move(g);}return dp[0];}
};

时间复杂度:O(n),其中 n 是数组 nums 的长度。
空间复杂度:O(1)

首先我们定义:
dp[0]:当前能被3整除的最大和。
dp[1]:当前除以3余1的最大和。
dp[2]:当前除以3余2的最大和。
没有选任何元素时,和为0是合法的解,并且0是可以被3整除的,所以我们在初始化时,令dp[0] = 0。

我们在进行状态转移的时候,要新建立一个数组,vector<int> g = dp;让g对dp进行深拷贝,新建立一个g数组的作用是,我们在计算第i个元素的时候,如果不使用g数组,而把g数组替换成dp,这会造成dp[1] + nums[i]dp[2] + nums[i]可能受到前面计算的影响,因为我们转移的dp是之前的状态,而如果直接使用dp,那么有的dp会被更新成目前状态,导致后续计算出错。


http://www.ppmy.cn/devtools/127783.html

相关文章

OSI参考模型与TCP/IP模型

OSI参考模型 物理层 定义电压、接口、线缆标准、传输距离、传输介质等物理参数。数据链路层&#xff08;确定范围里的某一个&#xff09; MAC地址寻址网络层&#xff08;确定一个范围&#xff09; 网络地址层寻址、路由传输层&#xff08;区分不同的程序&#xff09; 数据分段…

手机淘宝自动下单退货自动化RPA脚本机器人

使用手机集线器连接多个手机并发运行。 脚本分3个部分&#xff08;读取本地连接下单&#xff0c;退货获取退货地址信息&#xff0c;填写快递单号&#xff09; 脚本部分图结构看下面的图片 部分数据统计展示

估值与周期风险评估(2024/6/30)

这是每周最重要的文章。是我投资理论体系到实盘实战的运用。一套稳定的投资体系是我长期获利的源泉。一是明确长期估值和对应的整体仓位。二是明确短期风险状态和对应的网格交易计划。每周日视频讲解实盘&#xff0c;交流本周估值与下周网格计划。用我公开九年的实盘&#xff0…

Linux的find命令使用指南及实际shell用例

Linux的find命令使用指南及实际shell用例 基本语法常用选项实际shell用例 find命令是Linux和UNIX系统中一个非常强大的工具&#xff0c;它用于在指定目录下根据给定条件搜索文件。find命令功能强大&#xff0c;使用灵活&#xff0c;可以组合多种条件和选项来精确查找文件&#…

程序员的浪漫之给对象爬数据,没想到过程中竟然被写接口的老哥字段命名给秀到了!

目录 一、序言二、分析需求三、找数据分析字段四、建个表开爬数据五、结语 一、序言 最近对象转了销售岗&#xff0c;她的领导布置了项任务&#xff0c;一周要找500个对标客户的联系电话。看她又上天眼查、企查查、爱企查&#xff0c;还上各种采购平台手动抄采购负责人的信息和…

semi-Naive Bayesian(半朴素贝叶斯)

semi-Naive Bayesian&#xff08;半朴素贝叶斯&#xff09; 引言 朴素贝叶斯算法是基于特征是相互独立这个假设开展的&#xff08;为了降低贝叶斯公式: P ( c ∣ x ) P ( c ) P ( x ∣ c ) P ( x ) P(c|x) \frac {P(c)P(x|c)}{P(x)} P(c∣x)P(x)P(c)P(x∣c)​中后验概率 P …

基于几何约束的深度学习建筑震害自动识别与评估研究【附代码】

&#xff08;1&#xff09;提出建筑地震损伤识别评估几何约束深度学习框架 我国地域辽阔且地质构造复杂&#xff0c;地震等自然灾害频发&#xff0c;严重威胁城市建筑群服役寿命和人民生命财产安全。震后建筑损伤评估对灾后应急部署及恢复重建至关重要。传统基于结构动力学响应…

期刊论文投稿指南:如何利用ChatGPT精准选择合适的期刊?

知学术AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 在学术论文的写作与发表过程中&#xff0c;选择合适的期刊往往是投稿成功的关键一步。面对众多期刊&#xff0c;研究者常常感到迷茫&#xff0c;不知道该如何匹配期刊与自己的研究方向。这时&#xf…