LeetCode如何实现删除与获得点数
发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,小编给大家分享一下LeetCode如何实现删除与获得点数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1题目描述给定一个整
千家信息网最后更新 2025年02月24日LeetCode如何实现删除与获得点数思路:动态规划 通过题目要求,首先要明确一点是: 当选择了一个值获得其点数 ,则其他相同的值 也会选择。 因为当选择一个值时, 相邻值已被 删除,因此 其他相同的值不会被删除,一定会选择到。因此可以建立一个列表value,以值作为下标,记录选择每个值时对应可获得的点数。如:[2,2,3,3,4],value[2]=2*2,value[3]=3*2,value[4]=4*1,所以最后得到value=[0,0,4,6,4]。
小编给大家分享一下LeetCode如何实现删除与获得点数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1
题目描述
给定一个整数数组 nums ,每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数,同步删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。初始点数为0,返回可获得的最大点数。如:nums=[3,4,2],返回6。(首先选择4,积累4点数,同时删除3,再选择2,再积累2点数,总共为6。其他方式积累的点数均小于6)
2
题解
中间状态:此处中间状态dp[i]表示从1选择到i可获得的最大点数。
状态转移:一个值在整个过程中只有被删除和被获取点数两个可能,并且获取与否会影响其他数值的被选择情况。因此新来一个数,要么不选,则此时dp[i]=dp[i-1];如果选,则i-1就不能选,此时dp[i]=dp[i-2]+value[i],所以最终dp[i]=max(dp[i-1],dp[i-2]+value[i])。
class Solution: def deleteAndEarn(self, nums: List[int]) -> int: if not nums: return 0 dp = [0]*(max(nums)+1) value = dp.copy() #value = [0]*(max(nums)+1) for i,a in enumerate(nums): value[a]+=a dp[1] = value[1] for i in range(2,max(nums)+1): dp[i]=max(dp[i-1],dp[i-2]+value[i]) return dp[-1]
以上是"LeetCode如何实现删除与获得点数"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
点数
选择
状态
篇文章
积累
最大
相同
内容
题目
下标
不怎么
两个
个数
元素
动态
只有
同时
大部分
思路
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库查询成绩大于80分
数控程序软件开发
网络安全伦理道德 800字
英语四级报名服务器真垃圾
安全代理服务器方案
怎样设置服务器管理地址
服务器 数据安全
深圳蓝思网络技术怎么样
hp 服务器 虚拟化
宁夏办公软件开发报价多少
软件开发工程师要学习多久
我的世界知名主播服务器被炸事件
唯乐官方服务器关了吗
电脑服务器回收多少钱
软件开发客户跟进流程与技巧
网络安全值班记录
云自习软件开发
生存进化服务器文件保存在哪
兰德网络安全弹性报告
网络运营违反网络安全法
检测数据库的重要性
天龙八部就一个服务器
蒙自天气预报软件开发
韩国服务器哪家好
国网网络安全学习
常见计算机网络技术特点
网络安全技术与实训第四版微课版
二手服务器电脑回收
软件开发怎么把高
固定服务器