每日一题(力扣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];
    }
};
相关推荐
无聊的小坏坏3 小时前
拓扑排序详解:从力扣 207 题看有向图环检测
算法·leetcode·图论·拓扑学
浮灯Foden6 小时前
算法-每日一题(DAY13)两数之和
开发语言·数据结构·c++·算法·leetcode·面试·散列表
执子手 吹散苍茫茫烟波7 小时前
leetcode415. 字符串相加
java·leetcode·字符串
执子手 吹散苍茫茫烟波8 小时前
LCR 076. 数组中的第 K 个最大元素
leetcode·排序算法
山顶风景独好10 小时前
【Leetcode】随笔
数据结构·算法·leetcode
烧冻鸡翅QAQ14 小时前
62.不同路径
算法·动态规划
·白小白14 小时前
力扣(LeetCode) ——100. 相同的树(C语言)
c语言·算法·leetcode
墩墩同学15 小时前
【LeetCode题解】LeetCode 74. 搜索二维矩阵
算法·leetcode·二分查找
1白天的黑夜118 小时前
前缀和-560.和为k的子数组-力扣(LeetCode)
c++·leetcode·前缀和
m0_6728137718 小时前
Leetcode-3427变长子数组求和
leetcode