1,题目描述
2,题目分析
遍历原数组,dp保存下标值出现的频数。 dp[i]动态规划,新的dp值在两种情况中选择当前可能的最大值。
3,代码实现
class Solution {
public:
int deleteAndEarn(vector<int>& nums) {
vector<int> dp(10001, 0);
for(int i : nums)
dp[i]++;
for(int i = 2; i < 10001 ;i++){
dp[i] = max(dp[i-2]+dp[i]*i, dp[i-1]);
}
return dp[10000];
}
};