2024每日刷题(162)
Leetcode—740. 删除并获得点数
算法思想
实现代码
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 18int 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;}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!