题目

代码
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];
}
}
结果


本文介绍了一个Java编程问题的解决方案,通过删除数组中的元素来实现最大点数的获取。利用动态规划的方法,求解过程中涉及数组遍历、最大值计算以及状态转移方程。适合学习者理解动态规划在实际问题中的应用。
232

被折叠的 条评论
为什么被折叠?



