1 题目

Given an array nums of integers, you can perform operations on the array.

In each operation, you pick any nums[i] and delete it to earn nums[i] points. After, you must delete every element equal to nums[i] - 1 or nums[i] + 1.

You start with 0 points. Return the maximum number of points you can earn by applying such operations.

Example 1:

Input: nums = [3, 4, 2]
Output: 6
Explanation:
Delete 4 to earn 4 points, consequently 3 is also deleted.
Then, delete 2 to earn 2 points. 6 total points are earned.

Example 2:

Input: nums = [2, 2, 3, 3, 3, 4]
Output: 9
Explanation:
Delete 3 to earn 3 points, deleting both 2’s and the 4.
Then, delete 3 again to earn 3 points, and 3 again to earn 3 points.
9 total points are earned.

2 解题

题目有一点需要理解的是,如果删除元素3,那么获得3积分的同时,需要删除数组中所有的2和4。最开始我理解题目的时候,看成是要删除nums[i-1]和nums[i+1]。

当理解了这一点之后就发现这个和抢劫的例子是一样的。

class Solution {public int deleteAndEarn(int[] nums) {if(nums==null || nums.length==0) return 0;int max = nums[0];for(int num : nums){max = Math.max(max,num);}int[] count = new int[max+1];for(int num : nums){count[num]++;}return rob(count);}public int rob(int[] count) {int n = count.length;int dp0 = count[1]*1;int dp1 = 0;for(int i=2;i<n;i++){int dp  = dp1 + i*count[i];dp1 = Math.max(dp0,dp1);dp0 = dp;}return Math.max(dp0,dp1);}
}

740. Delete and Earn相关推荐

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

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

  2. LeetCode All in One 题目讲解汇总(持续更新中...)

    原文地址:https://www.cnblogs.com/grandyang/p/4606334.html 终于将LeetCode的大部分题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开 ...

  3. 快速学习-Saturn性能测试报告

    Saturn性能测试报告 1. 测试目的 评估zk集群可以负荷的域数量 zk参数调优 2. 测试环境 ZooKeeper Ensemble (5) Version: 3.4.6 server id r ...

  4. 仓库管理系统————QT+SQLite实现

    1.概述 非常感谢hello_monster博主的分享,在他的基础上完善和新增的一些功能,使功能相对更加完整. 本文较为基础,本人也是小白,文中有不合适和不对的地方欢迎各位留言指正. 希望能对你有所帮 ...

  5. Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题

    CORS(DELETE请求.PUT请求) Reject: HTTP 'DELETE' is not allowed [DEBUG] 2021-08-25 15:23:52.401 [http-nio- ...

  6. Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)

    1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...

  7. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  8. C++:随笔6---new\delete\虚方法\抽象方法

    指针是一种专门用来存储内存地址的数据类型.(他存储的不是具体的数据而是别人的地址) 常用做法是:创建一个变量,再把这个变量的地址赋值给一个指针,然后就可以用指针去访问这个变量的值. 事实上在C和C++ ...

  9. C++中的new和delete用法

    //个体 point *p=new point; //point类存在初始化成员函数point(void)的前提下才能这样赋值: delete p;//一维数组,这样赋值的话,p在程序里表示的就不是指 ...

最新文章

  1. WORD 排版十技巧
  2. cadence原理图封装pin名称重复_硬件工程师必备技巧--如何快速制作PCB封装
  3. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170326
  4. 数据结构学习笔记(七):哈希表(Hash Table)
  5. 【面试招聘】双非渣硕的秋招路
  6. 苏州数字网络计算机比赛,苏州市计算机学会数字化校园专委会2018年年会在我院召开...
  7. [转载] C#面向对象设计模式纵横谈——25 设计模式总结
  8. 计算机应用基础课程整体设计说课视频,计算机应用基础说课稿
  9. Python代码分析工具:PyChecker、Pylint
  10. 研0必读!李航《统计学习方法》啃书指南
  11. MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法
  12. boost::serialization 用基类指针转存派生类(错误多多,一波三折)
  13. Java系统架构的演化之路
  14. 你的手机浏览器不支持webgle_中国联通回应“逐渐关闭2G、3G网络”:系用户手机不支持...
  15. Photoshop/PS中如何写维吾尔语等语言 乱码
  16. 使用PdgCntEditor软件对PDF目录进行快速编辑
  17. 手机长度px值_深度讲解VIEWPORT和PX是什么?移动端单位px,em,rem
  18. python查询电脑序列号 CPU、主板、硬盘、MAC、BIOS
  19. 十大程序员最实用的技术社区网站
  20. mhl数据线_mhl接口是什么?mhl接口有哪些作用

热门文章

  1. input的type属性的修改
  2. 4 int.parse方法调用问题和同行评审
  3. VC++6.0如何创建与调用动态链接库(dll)
  4. SCOPE_IDENTITY和@@identity的区别
  5. springcloud gateway 自定义 accesslog elk
  6. Sublime Text 3 、WebStorm配置实时刷新
  7. 代码中特殊的注释技术——TODO、FIXME和XXX的用处(转)
  8. Z-Blog 扩展数据库 字段 二次开发
  9. 织梦留言板guestbook.htm加入头部导航
  10. java实现map和object互转