740. 删除与获得点数

————————————————————————————————————————————
给定一个整数数组 nums ,你可以对它进行一些操作。
每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。

开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。

示例 1:
输入: nums = [3, 4, 2]
输出: 6
解释:
删除 4 来获得 4 个点数,因此 3 也被删除。
之后,删除 2 来获得 2 个点数。总共获得 6 个点数。

示例 2:
输入: nums = [2, 2, 3, 3, 3, 4]
输出: 9
解释:
删除 3 来获得 3 个点数,接着要删除两个 2 和 4 。
之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。
总共获得 9 个点数。

注意:
nums的长度最大为20000。
每个整数nums[i]的大小都在[1, 10000]范围内。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-and-earn
————————————————————————————————————————————
解题思路:该题的解法类似于打家劫舍,统计每类数据的个数,不能选择相邻两个点的数据,因此可以得到C++的代码如下:

class Solution {
public:int deleteAndEarn(vector<int>& nums) {int length = nums.size();int num=0;for(int i=0;i<length;i++)  #找到nums中最大的值{num = max(num,nums[i]);}vector<int> dp(num+1,0);  #用nums中最大的值构建vector容器for(int i=0;i<length;i++)   #统计每类数据的数量{dp[nums[i]] = dp[nums[i]] + 1;}for(int i=0;i<num+1;i++)   #将数据乘于对应的索引得到值之和{dp[i] = dp[i]*i;}for(int i=2;i<num+1;i++)    #类似于打家劫舍的动态规划{dp[i] = max(dp[i-1],dp[i]+dp[i-2]);}int men=0;for(int i=0;i<num+1;i++)    #返回最大的值{men = max(men,dp[i]);}return men;}
};

leetcode - 740. 删除与获得点数相关推荐

  1. LeetCode 740. 删除与获得点数(排序+动态规划)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组 nums ,你可以对它进行一些操作. 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数.之后,你必须删除 ...

  2. [leetcode] 740.删除并获得点数

    给你一个整数数组 nums ,你可以对它进行一些操作. 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数.之后,你必须删除 所有 等于 nums[i] - 1 和 nu ...

  3. leetcode 740. 删除并获得点数(dp)

    给你一个整数数组 nums ,你可以对它进行一些操作. 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数.之后,你必须删除每个等于 nums[i] - 1 或 nums ...

  4. leetcode 740. Delete and Earn | 740. 删除并获得点数(暴力递归->傻缓存->DP)

    题目 https://leetcode.com/problems/delete-and-earn/ 题解 建立 help 数组,相当于一个(正向)索引表. 先排序,因为删除的顺序不影响最优结果(实际上 ...

  5. 【LeetCode】LeetCode之删除并获得点数——动态规划、排序+动态规划

  6. 动态规划——删除并获得点数(Leetcode 740)

    题目选自Leetcode 740. 删除并获得点数 这道题和打家劫舍其实很类似,只不过因为这道题给的原始数组其实对于元素的值和位置来说并不是连续的,所以我们可以将其转化为统计出每个数字的值,然后进行& ...

  7. [链表|多解法] leetcode 19 删除链表的倒数第N个节点

    [链表|多解法] leetcode 19 删除链表的倒数第N个节点 1.题目 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2-&g ...

  8. C++描述 LeetCode 26. 删除排序数组中的重复项

    C++描述 LeetCode 26. 删除排序数组中的重复项   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客 ...

  9. LeetCode 2382. 删除操作后的最大子段和

    LeetCode 2382. 删除操作后的最大子段和 倒叙 + 并查集 typedef long long LL; class Solution {public:vector<long long ...

最新文章

  1. Concrete Math 混凝土数学(具体数学)随笔
  2. 使用CSS选择器在页面中插入内容
  3. 封装caffe-windows-cpu(支持模型有多个输出)
  4. SQL注入-基于MySQL的注入提权(十七)
  5. springboot 静态资源访问,和文件上传 ,以及路径问题
  6. python-集合数据类型
  7. STM32工作笔记0094---音乐播放器实验
  8. 一只激光雷达独角兽的倒掉,可能进入倒计时了
  9. Keras源码下载记录
  10. 原创 | 职场风云 (三)面对压力
  11. python安装graphviz和pydotplus
  12. Linux高可用集群方案之heartbeat基础原理及逻辑架构
  13. python记录鼠标和键盘操作并重复_鼠标和键盘操作
  14. Coherence X for Mac 网页转换应用程序工具
  15. jupyter中markdown模式编辑文本格式
  16. 在Matlab中构建最大带权生成树
  17. centos安装LDAP即配置
  18. pytorch系列教程(四)-自定义损失函数
  19. 用Python每天自动给女朋友免费发短信,谁说程序员不懂浪漫?
  20. Word2Vec笔记

热门文章

  1. 入门代码教程第六节 如何:使用客户端
  2. MinIO Client完全指南 ​​​​​​​
  3. Spring Security 示例UserDetailsS​​ervice
  4. Top命令找出CPU占用较高的Java线程信息
  5. localstorage本地缓存
  6. .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
  7. 【快速安装Docker服务及Docker配置、Docker常用命令。】
  8. zsh关于.zprofile .zlogin .zshrc .zshenv文件中环境变量的加载
  9. Mac Nginx 配置 Tomcat 配置 jdk环境变量 Nginx部署服务遇到的坑(2)
  10. react引入外部js_React.js:无需使用外部库即可实现拖放功能