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;
    }
};

运行结果

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

相关推荐
dlraba8021 小时前
机器学习-----K-means算法介绍
算法·机器学习·kmeans
芥子须弥Office2 小时前
从C++0基础到C++入门 (第二十五节:指针【所占内存空间】)
c语言·开发语言·c++·笔记
啊阿狸不会拉杆2 小时前
《算法导论》第 14 章 - 数据结构的扩张
数据结构·c++·算法·排序算法
Q741_1473 小时前
如何判断一个数是 2 的幂 / 3 的幂 / 4 的幂 / n 的幂 位运算 总结和思考 每日一题 C++的题解与思路
开发语言·c++·算法·leetcode·位运算·总结思考
小王爱学人工智能4 小时前
快速了解DBSCAN算法
算法·机器学习·支持向量机
小沈同学呀4 小时前
阿里巴巴高级Java工程师面试算法真题解析:LRU Cache实现
java·算法·面试
我今晚不熬夜5 小时前
使用单调栈解决力扣第42题--接雨水
java·数据结构·算法·leetcode
珍珠是蚌的眼泪5 小时前
LeetCode_哈希表
leetcode·哈希表·快乐数·字母异位词
flashlight_hi5 小时前
LeetCode 分类刷题:209. 长度最小的子数组
javascript·算法·leetcode
源代码•宸6 小时前
C++高频知识点(十八)
开发语言·c++·经验分享·多线程·互斥锁·三次握手·字节对齐