力扣740. 删除并获得点数(动态规划)

题目描述:

给你一个整数数组 nums ,你可以对它进行一些操作。

每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。

开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。

示例 1:

输入:nums = [3,4,2]
输出:6
解释:
删除 4 获得 4 个点数,因此 3 也被删除。
之后,删除 2 获得 2 个点数。总共获得 6 个点数。

示例 2:

输入:nums = [2,2,3,3,3,4]
输出:9
解释:
删除 3 获得 3 个点数,接着要删除两个 2 和 4 。
之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。
总共获得 9 个点数。

提示:

  • 1 <= nums.length <= 2 * 104
  • 1 <= nums[i] <= 104

思路:

根据题目意思我们可以很容易得到,如果我们要选择删除x,那么我们会将所有的x+1和x-1的元素全部删掉并获得x点数,换句话说,我们选择不能同时同时获得x和x+1点数或者是x和x-1点数。因为,如果获得了x点数,x+1的元素与x-1的元素就已经全部不存在了,而如果有多个x,我们就可以获得这些x总和的点数。

我们可以用sum[x]表示元素x的总和点数。

那么这个题和打家劫舍就一样了,求不能选相邻元素的最大点数

转化成为背包的思想--选或者不选

选x,就要加上所有x总和的点数,这个状态是由x-2转移过来的

不选x,那么上一个状态就是x-1

用f[x]表示在0--x里面选不相邻的值,获得的最大点数。

f[x]=max(f[x-1],f[x-2]+sum[x])

代码:

class Solution {
public:int deleteAndEarn(vector<int>& nums) {int len=nums.size();int max_v=0;//记录nums数组里最大的数,也就是数组sum的下标范围for(int i=0;i<len;i++){if(nums[i]>max_v){max_v=nums[i];}}vector<int> sum(max_v+10,0);for(int i=0;i<len;i++){sum[nums[i]]+=nums[i];//sum[nums[i]]表示值为nums[i]的总和}vector<int> f(max_v+1,0);f[0]=sum[0];f[1]=max(sum[1],sum[0]);for(int i=2;i<=max_v;i++){f[i]=max(f[i-1],f[i-2]+sum[i]);}return f[max_v];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/127694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于BP神经网络的风险等级预测,BP神经网络的详细原理,

目录 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 代码链接:基于BP神经网络的风险等级评价,基于BP神经网络的风险等级预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.n…

对一个金融风控测额公式的理解(1)

目录 公式&#xff1a;&#xff08;近3个月回款总额/过去3个月的FBA平均库存价值&#xff09;*最近FBA的库存价值*过去13周FBA发货比例 详细讨论一下这个&#xff1a;&#xff08;近3个月回款总额/过去3个月的FBA平均库存价值&#xff09; 既然&#xff08;近3个月回款总额/…

第十八届黑龙江省赛(K dp)

链接&#xff1a;The 18th Heilongjiang Provincial Collegiate Programming Contest Problem K. Turn-based Game 题意 主角有 A A A 血量&#xff0c;每只怪物有 B B B 血量&#xff0c;每个单位每次进攻伤害为 1 1 1&#xff0c;每个单位血量低于等于 0 0 0 判定为死…

MacOS使用PF实现iptables的端口转发功能

目录 准备web服务通过pf实现端口转发其他命令参考文章 准备web服务 使用Flask启动一个简单的web服务 from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return Hello World!if __name__ __main__:app.run(port5000)浏览器访问&#xff1a;http:/…

mybatis plus框架@TableField注解不生效问题及解决方案

目录 一、问题描述二、解决方案三、关于TableField注解失效原因的思考四、Mapper接口LambdaQuery方法调用过程梳理1、Mapper接口调用实际上使用的是动态代理技术2、mybatisplus对查询的单独处理3、findOne实际上还是要查询List4、mybatis接口上下文信息MappedStatement5、myba…

EasyCVR智能边缘网关用户信息泄漏漏洞

EasyCVR智能边缘网关用户信息泄漏漏洞 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: title"EasyCVR" 漏洞复现1. 构造poc2. 获取管理员账户密码3. 登录后台 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地提高网络安全意识和技术水平…

办公必备神器:如何用AI快速生成年终总结PPT?

2023年已经步入尾声&#xff0c;今年的销售业绩如何&#xff1f;用户同比增长率是否达到预期&#xff1f;部门年度API完成情况&#xff1f;新开发的项目进展如何&#xff1f;品牌全球计划在各区域市场的部署进展&#xff1f;…… 每年年底&#xff0c;不论是纵横全球的大企业&…

开发环境配置之Linux安装golang

Linux安装golang 目录 1. 下载Go发行版2. 配置工作空间3. 版本升级 1. 下载Go发行版 从官方地址&#xff1a;https://golang.org/dl/ 上下载合适的 二进制发行版 可以使用wget、curl等工具下载具体的go的发行版。 wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz接着…

Android---底层剖析 Window、Activity、View 三者关系

对于一个 Android 工程师来讲&#xff0c;或多或少都听说过 Window 的概念&#xff0c;并且隐约感受到它在 Activity 和 View 之间应该发挥着某种连接的作用。但如果要说出这三者之间的关系&#xff0c;多数 android 工程师都不知道从何下手。 Activity 的 setContentView Ac…

教研成果登记网站建设开发原理,齿轮加工刀片

成都工具研究所有限公司的前身是成都工具研究所&#xff0c;于1956年创建于北京&#xff0c;是原机械工业部的直属研究所&#xff0c;是我国机械工业的综合性工具科研机构。公司ctri.com.cn 公司主要从事精密切削工具、精密测量仪器以及表面改性处理技术的技术研究、产品开发和…

VScode远程连接错误:进程试图写入不存在的管道

使用VScode连接树莓派时&#xff0c;出现远程连接错误&#xff1a;进程试图写入不存在的管道 解决方案&#xff1a; &#xff08;1&#xff09;可以进入config所在文件夹&#xff0c;删除文件 &#xff08;2&#xff09;无法解决的化尝试下述方法 输入 Remotting-SSH:Settin…

FreeRTOS-任务通知

一.任务通知的相关API 1. vTaskNotifyGive(): 用于给指定任务发送通知。 void vTaskNotifyGive( TaskHandle_t xTaskToNotify );参数说明&#xff1a; xTaskToNotify: 被通知的任务的句柄。返回值&#xff1a; 无。2. ulTaskNotifyTake(): 用于等待并接收任务通知。 uint32_…

自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮

自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮 自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮 <template><div class"box"><el-table :data"msgMapList" border class"table">&l…

Java入门篇 之 逻辑控制(练习题篇)

博主碎碎念: 练习题是需要大家自己打的请在自己尝试后再看答案哦&#xff1b; 个人认为&#xff0c;只要自己努力在将来的某一天一定会看到回报&#xff0c;在看这篇博客的你&#xff0c;不就是在努力吗&#xff0c;所以啊&#xff0c;不要放弃&#xff0c;路上必定坎坷&#x…

k8s约束调度其二

一&#xff0c;Pod亲和性与反亲和性 调度策略匹配标签操作符拓扑域支持调度目标nodeAffinity主机In, NotIn, Exists,DoesNotExist, Gt, Lt 否 指定主机podAffinityPodIn, NotIn, Exists,DoesNotExist是Pod与指定PodpodAntiAffinityPodIn, NotIn, Exists,DoesNotExist是Pod与指…

java8利用Stream方法求两个List对象的交集、差集与并集(即:anyMatch和allMatch和noneMatch的区别详解)

1、anyMatch 判断数据列表中是否存在任意一个元素符合设置的predicate条件&#xff0c;如果是就返回true&#xff0c;否则返回false。 接口定义&#xff1a; boolean anyMatch(Predicate<? super T> predicate); 方法描述&#xff1a; 在anyMatch 接口定义中是接收 P…

c++ Vector 学习

vevtor 是c 中自带得动态数组&#xff0c;dynamic array array can hold different values/objects of same type 可以装不同得类型或者对象 dynamic size can be changed at runtime 可以运行得时候改变 要使用的话&#xff0c;先引入 #include <vector> std::vector…

Kafka基本原理、生产问题总结及性能优化实践 | 京东云技术团队

Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、支持分区的&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&a…

Mac 解决 APP 快捷键冲突

打开 Mac 系统设置键盘->键盘快捷键->App快捷键->添加快捷键&#xff08;加号&#xff09;->标题需要和tab名称完全一致&#xff08;包括中英文、标点符号等&#xff0c;如下图&#xff09;设置快捷键即可 Reference&#xff1a; https://www.cnblogs.com/Questio…

考前须知-11月软考机考

1、11月4-5日考试有几个时间点需注意&#xff1a; 考前40分钟&#xff0c;应试人员应到达准考证上所指定的考点&#xff0c;凭本人准考证和有效证件&#xff08;居民身份证、社会保障卡、港澳台居民身份证明、外籍人员护照、外国人永久居留证明&#xff09;原件进入进入本资格…