删除并获得点数

news/2024/11/14 11:06:26/文章来源:https://www.cnblogs.com/Bosiju/p/18542954

题目

给你一个整数数组 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被删除(不计入积分),与打家劫舍类似,如果我取了一个,旁边的两个就不能在取了.
  • num[i] 的值可以重复,即值x可以对应多个i值.

我们通过遍历,寻找nums中的最大值,以此来框定动态规划的大小.(我们将打家劫舍部分做修改,用作函数rob,函数参数numssize以此方法被计算)

1.初始状态
将x值合并,当我们取x时,将所有x取到.
求出maxnum框定rob传参大小.

2.转移处理
使用rob函数进行处理

3.结束状态
通过rob函数求出max并返回.

代码

int rob(int* nums, int numsSize) {if(numsSize == 1) return nums[0];int first = nums[0], second = fmax(nums[0], nums[1]);for (int i = 2; i < numsSize; i++) {int temp = second;second = fmax(first + nums[i], second); first = temp;}return second;
}int deleteAndEarn(int* nums, int numsSize) {int maxnum = 0;for (int i = 0; i < numsSize; i++) {maxnum = fmax(maxnum, nums[i]);} //找到最大值int sum[maxnum + 1] = {}; //框定范围for (int i = 0; i < numsSize; i++) {sum[nums[i]] += nums[i]; //计算所有为nums[i]的值的总和}return rob(sum,maxnum+1);
}

题目链接:https://leetcode.cn/problems/delete-and-earn/?envType=study-plan-v2&envId=dynamic-programming

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

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

相关文章

一文搞懂 ARM 64 系列: PACISB

一文搞懂 ARM 64 系列: PACISB1 PAC AMR64提供了PAC(Pointer Authentication Code)机制。 所谓PAC,简单来说就是使用存储在芯片硬件上的「密钥」,一个「上下文」,与「指针地址」进行加密计算,得出一个「签名」,将这个「签名」写入指针的高bit上。计算出来的「签名」之所以…

NewStarCTF-pwn

NewStarCTF-pwn目录NewStarCTF-pwnweek1overwriteread() 参数gdbweek2week3week4 week1 overwrite 首先查看文件,保护全开,为64位放入IDA查看代码,发现关键函数func()第9-12行代码,首先打印提示信息“pls input the length you want to readin: ”,然后使用__isoc99_scanf…

Animal Controller文档——Animal Modifiers

Overview 是一个结构类,在进入新动画时修改Animal的Main Core功能。通常用于States或Animator Controller中的Animal Modifier Behaviour组件。有关如何使用这些的更多信息,请参阅States页面。Parameters RootMotion 启用/禁用Animator上的Root Motion。 Sprint 启用/禁用Ani…

南开高级语言程序设计2--OJ题目答案

注意:素数是从2开始,2也是素数 第七章(运算符重载) #include <cstdio> #include <iostream>using namespace std; int gcd(int a, int b) {return b ? gcd(b, a % b) : a; } int lcm(int a, int b) {return a * b / gcd(a, b); } class Rational { private:in…

Animal Controller文档——States

Overview States是动物控制的核心逻辑,使动物能够移动、坠落、跳跃、死亡等。 States的动画相互独立。例如,动物不能同时处于奔跑和跳跃,或飞行和游泳状态。 它们按优先级排序,优先级高的状态将优先尝试激活,之后才是优先级低的状态。如果一个高优先级状态是当前激活的状态…

开源 - Ideal库 - 常用枚举扩展方法(一)

分享枚举操作常用扩展方法,适用正常枚举和位标志枚举。包括名称/描述转枚举、转枚举值或默认值等方法,并附上详细单元测试。代码库已上传,可直接使用Ideal.Core.Common。今天和大家享一些关于枚举操作相关的常用扩展方法。我们平时用的比较多的是正常枚举,同时还有加[Flags…

2024腾讯云双十一必抢清单:省钱、省心、省力的购买攻略

一、前言 大家好,我是 Neo!一年一度的双十一购物狂欢节又到了!在这个特别的日子,腾讯云也推出了超一、前言 大家好,我是 Neo!一年一度的双十一购物狂欢节又到了!在这个特别的日子,腾讯云也推出了超值的优惠活动。最近我正好在做自己的小程序项目,需要用到服务器,特意…

Pytest自动化发现测试数据并进行数据驱动-支持YAML/JSON/INI/CSV数据文件

需求在测试框架中,往往需要测试数据和代码分离,使用CSV或JSON等数据文件存储数据,使用代码编写测试逻辑 一个用例过程往往可以测试多组数据,Pytest原生的参数化往往需要我们自己手动读取数据文件,比较麻烦又略显混乱 我们如何能把数据文件按约定的目录和文件名存起来,文件…

IT Manager项目管理工具-最新版

为了解决项目管理的难点,过多纸质办公的问题,诞生了该系统。其中的价值点包括几大点: 公司组织架构管理;项目成员管理,项目分解,任务分配,时间进度,质量把控; 周报,月报,工时统计;查看项目成员工作饱和度;协助公司进行有效的项目成本控制 组织数据初始化 首先需要…

概率统计-常见分布的均值及方差

概率统计-常见分布的均值及方差 纯原创+老师的PPT总结部分,作二级结论

团队作业4-2

仓库地址:https://github.com/bitpurleclude/GDUT-Goofish.git这个作业属于哪个课程 (https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/join?id=CfDJ8AOXHS93SCdEnLt5HW8VuxT_rAhbZKO3TfjMmbv1B0Re5Fp2d0_QACha2ZoYZ4fxF-ZKCCAhfJl7B8mvCfesLYE02X8T6kx_2R8w0SR-ykrgDVRKW…

【nginx安全】Nginx日志安全分析脚本

Nginx 日志的重要性和必要性 我们知道 Nginx 属于是程序日志的范畴,相对于系统日志来说层级要低一些了,但对于站长来说是至关重要的。因为 Nginx 日志里记录着站点来访的所有信息,无论是正常访客还是恶意请求都会在日志里留下痕迹,比如:被采集、恶意刷流量、暴力破解、漏洞…