目录
一、题目
二、代码
一、题目
740. 删除并获得点数 - 力扣(LeetCode)
二、代码
转换成打家劫舍问题
class Solution {
public:
int deleteAndEarn(vector<int>& nums) {
int Max = nums[0];//nums中的最大点数
for(int i=0;i<nums.size();i++)
{
if(nums[i]>Max)
Max=nums[i];
}
vector<int>data(Max+1,0);
for(int i=0;i<nums.size();i++)//data数组保存某个点数出现的总和,下标i表示点数i
{
data[nums[i]] += nums[i];
}
vector<int>dp(Max+1,0);//转换成打家劫舍问题
dp[0] = 0;
dp[1] = data[1];
for(int i = 2;i<=Max;i++)
{
dp[i] = max(dp[i-1],dp[i-2]+data[i]);
}
return dp[Max];
}
};