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

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

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

相关推荐

  1. 【Leetcode】740- 删除获得点数

    2024-05-04 00:48:05       36 阅读
  2. 每日—第70,爬楼梯

    2024-05-04 00:48:05       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-04 00:48:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-04 00:48:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-04 00:48:05       82 阅读
  4. Python语言-面向对象

    2024-05-04 00:48:05       91 阅读

热门阅读

  1. Vue+ElementUI实现文件照片音频视频预览

    2024-05-04 00:48:05       33 阅读
  2. linux运行sql文件错误的解决方案

    2024-05-04 00:48:05       34 阅读
  3. Rust move

    2024-05-04 00:48:05       33 阅读
  4. 常用设计模式

    2024-05-04 00:48:05       25 阅读
  5. opencv t函数

    2024-05-04 00:48:05       36 阅读
  6. Python之字符串,列表,元组,字典之间的转换写法

    2024-05-04 00:48:05       35 阅读
  7. Linux 设置一个程序开机启动的几种方式

    2024-05-04 00:48:05       39 阅读
  8. golang中数组array和切片slice的区别

    2024-05-04 00:48:05       34 阅读
  9. Go怎么实现map并发安全的三种方式

    2024-05-04 00:48:05       30 阅读