每日一题(力扣740):删除并获得点数--dp+思维

其实跟打家劫舍没啥区别 排序去重之后去考虑当前位置和前两个位置之间的关系即可,具体见代码:

cpp 复制代码
class Solution {
public:
    int deleteAndEarn(vector<int>& nums) {
        int n = nums.size();
        if (n == 1) return nums[0];
        unordered_map<int, int> hash;
        for (int i = 0; i < n; i++) {
            ++hash[nums[i]];
        }
        sort(nums.begin(), nums.end());
        int n1 = (unique(nums.begin(), nums.end()) - nums.begin());
        vector<int> dp(n1 + 1, 0);
        dp[0] = 0; dp[1] = nums[0] * hash[nums[0]];
        
        for (int i = 1; i < n1; i++) {
            if (nums[i] - nums[i - 1] == 1) {
                dp[i + 1] = max(dp[i - 1] + nums[i] * hash[nums[i]], dp[i]);
            }
            else {
                dp[i + 1] = dp[i] + nums[i] * hash[nums[i]];
            }
        }

        return dp[n1];
    }
};
相关推荐
阿旭超级学得完5 小时前
C++11包装器(function和bind)
java·开发语言·c++·算法·哈希算法·散列表
如竟没有火炬8 小时前
接雨水22
数据结构·python·算法·leetcode·散列表
洛水水9 小时前
【力扣100题】34.二叉搜索树中第K小的元素
c++·算法·leetcode
_深海凉_9 小时前
LeetCode热题100-翻转二叉树
算法·leetcode·职场和发展
环流_9 小时前
redis中hash的应用场景
数据库·redis·哈希算法
小雅痞11 小时前
[Java][Leetcode simple] 205. 同构字符串
java·算法·leetcode
焜昱错眩..12 小时前
力扣周赛难题 3906.统计网格路径中好整数的数目——自我拆解学习与分析(数位dp上下界的奇妙)
学习·算法·leetcode·动态规划
兰令水12 小时前
topcode【随机算法题】【2026.5.14打卡-java版本】
java·算法·leetcode
故事和你9112 小时前
洛谷-【图论2-1】树2
开发语言·数据结构·c++·算法·动态规划·图论
小辉同志12 小时前
72. 编辑距离
leetcode·多维动态规划