LeetCode--删除并获得点数--动态规划

一、题目解析

二、算法原理 

根据题意,在选择了元素 x 后,该元素以及所有等于 x−1 或 x+1 的元素会从数组中删去。若还有多个值为 x 的元素,由于所有等于 x−1 或 x+1 的元素已经被删除,我们可以直接删除 x 并获得其点数。因此若选择了 x,所有等于 x 的元素也应一同被选择,以尽可能多地获得点数。

若数字val在数组中出现的次数为a,我们利用另一个数组dp来记录数组中该数出现的总数dp[val]==a*val。再创建出数组f,f[n]表示选择n这个点数时获得的最大点数,数组g,g[n]表示不选择n这个点数时获得的最大点数。返回f[n]和g[n]的较大值即为所求。

三、代码解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值