uacs2024

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

leetcode 740. 删除并获得点数

740. 删除并获得点数

凭着感觉,莫名其妙迷迷糊糊地就通过了,自己也不知道怎么就过了,以下是题解的评论

// 每个位置上的数字是可以在两种前结果之上进行选择的:
// 1.如果你不删除当前位置的数字,那么你得到就是前一个数字的位置的最优结果。
// 2.如果你觉得当前的位置数字i需要被删,那么你就会得到 i - 2位置的那个最优结果加上当前位置的数字乘以个数。
// 以上两个结果,每次取最大的,记录下来,然后答案就是最后那个数字了。
复制代码
class Solution {
public:
    int deleteAndEarn(vector<int>& nums) {
        int maxNum = *(max_element(nums.begin(), nums.end()));
        vector<int> countNum(maxNum + 1);
        for(int &num : nums)  ++countNum[num];
        vector<int> dp(maxNum + 1);//dp[i]代表直到 数字 i 所能得到的最大点数
        if(countNum[1] != 0){
            dp[1] = countNum[1];
        }
        for(int i = 2;i <= maxNum;++i){
            dp[i] = max(i * countNum[i] + dp[i - 2],dp[i - 1]);
        }
        return dp[maxNum];
    }
};
复制代码

 

posted on   ᶜʸᵃⁿ  阅读(6)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示