Leetcode—740. 删除并获得点数【中等】(unordered_map+set+sort)

2024每日刷题(162)

Leetcode---740. 删除并获得点数

算法思想

实现代码

cpp 复制代码
class Solution {
public:
    int deleteAndEarn(vector<int>& nums) {
        unordered_map<int, int> freq;
        set<int> st;
        sort(nums.begin(), nums.end());
        int n = nums.size();
        for(int i = 0; i < n; i++) {
            freq[nums[i]]++;
            st.insert(nums[i]);
        }

        // 2 3 3 5 6 6
        // 2  3  5  6
        // 2  6  11 18
        int prev1 = 0, prev2 = 0, dp = 0;
        int i = 0;
        int prev = 0;
        for(auto num: st) {
            int curEarn = num * freq[num];
            if(i > 0 && num == prev + 1) {
                dp = max(prev1 + curEarn, prev2);
                prev1 = prev2;
                prev2 = dp;
            } else {
                dp =  prev2 + curEarn;
                prev1 = prev2;
                prev2 = dp;
            }
            prev = num;
            i++;
        }
        return dp;
    }
};

运行结果

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

相关推荐
GEEKVIP32 分钟前
如何在没有备份的情况下恢复 Mac 上丢失的数据
经验分享·笔记·安全·macos·电脑·笔记本电脑·改行学it
Lenyiin33 分钟前
《 C++ 修炼全景指南:十 》自平衡的艺术:深入了解 AVL 树的核心原理与实现
数据结构·c++·stl
哲伦贼稳妥1 小时前
程序人生-我的外服经历(4)
经验分享·程序人生·职场和发展
程序猿进阶1 小时前
如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?
java·ide·vscode·算法·面试·职场和发展·架构
Eloudy1 小时前
一个编写最快,运行很慢的 cuda gemm kernel, 占位 kernel
算法
程序猿练习生1 小时前
C++速通LeetCode中等第5题-无重复字符的最长字串
开发语言·c++·leetcode
king_machine design1 小时前
matlab中如何进行强制类型转换
数据结构·算法·matlab
西北大程序猿1 小时前
C++ (进阶) ─── 多态
算法
无名之逆1 小时前
云原生(Cloud Native)
开发语言·c++·算法·云原生·面试·职场和发展·大学期末
头发尚存的猿小二1 小时前
树——数据结构
数据结构·算法