题目
代码
class Solution {
public int deleteAndEarn(int[] nums) {
int max_Num = 0;
for(int num: nums){ if(max_Num < num) max_Num = num; }
//根据最大值创建多大的数组
int[] dp = new int[max_Num + 1];
//把数组中的元素存在新的新的数组中,数组下标表示指,该下标的数组指表示该下标出现的次数
for (int num: nums) { dp[num]++; }
//动态规划求解
for(int i = 2; i <= max_Num; i++) {
dp[i] = Math.max(dp[i - 1], dp[i - 2] + dp[i] * i);
}return dp[max_Num];
}
}