Java 动态规划 Leetcode 740. 删除并获得点数

news2024/11/26 16:58:13

题目

对于该题的题目分析,已经代码分析都一并写入到了代码注释中

代码

class Solution {
    public int deleteAndEarn(int[] nums) {
        //核心思路:
        //由于我们获得 nums[i] 的点数之后,就必须删除所有等于 nums[i] - 1 和 nums[i] + 1 的元素
        //假设我们现在要解决的数组为 1,2,3,4,5 当我们获得2的点数就不能获得 1,3 的点数,我们的选择就是 2,4 或者 1,3,5(即相邻的点数不能获取)
        //这样明显问题就简单了许多,所以我们要进行处理,将源数组转换为0,1,2,3...顺序排序的形式
        //我们可以创建一个辅助数组 arr ,让 arr 的下标表示源数组 nums[i] 的值, arr 的值表示源数组 nums[i] 值的总和
        //例如:对于nums=[2,2,3,3,3,4]
        //         arr=[0,0,4,9,4]
        //         下标:0,1,2,3,4
        //对于arr数组,我们就可以转换问题为相邻的点数不能获取求最大点数

        //由于 arr 数组的下标表示 nums 数组的值,而 nums 数组的值的最大值为10000(由题可知),所以 arr 数组的下标也要有10000
        int n=10001;
        int[] arr=new int[n];

        //初始化arr数组
        for(int x:nums){
            arr[x]+=x;
        }

        //创建dp表
        //对于arr数组中的点数我们可以选择要也可以选择不要
        //假设 f[i] 表示下标为i的点数我们必定要时所得的点数最大值, g[i] 表示下标为i的点数我们必定不要时所得的点数最大值
        // f[i] 由于下标为i的点数我们必定要,所以下标i-1的点数我们必定不要,那么到下标 i 我们能够获得的最大点数为f[i]=g[i-1]+arr[i]
        // g[i] 由于下标为i的点数我们必定不要,所以下标为 i-1 的点数我们可以选择要也可以选择不要,由于我们要求最大点数,所以我们应该选择点数较大的情况
        //g[i]=Math.max(f[i-1],g[i-1])
        //由于点数最大能达到10000,所以我们最大要判断10000这个点数是要还是不要,所以f数组和g数组都要开辟10001的大小
        int[]f=new int[n];
        int[]g=new int[n];

        //初始化
        //根据上面对f数组和g数组的分析,我们知道 i 的取值应该从1开始,所以我们需要知道f[0]和g[0]的值
        f[0]=arr[0];
        //g[0]=0;

        //填充dp数组
        for(int i=1;i<n;i++){
            f[i]=g[i-1]+arr[i];
            g[i]=Math.max(f[i-1],g[i-1]);
        }

        //返回值
        //当我们填充完f和g数组后,我们就知道了最后一个数选和不选的最大值,由于我们要的是最大点数,所以返回的应该是两个最大值中较大的一个
        return Math.max(f[n-1],g[n-1]);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/948991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性价比高的照明品牌,五大性价比高的照明品牌台灯推荐

很多家长有时候会说孩子觉得家里的台灯灯光刺眼&#xff0c;看书看久了就不舒服。这不仅要看光线亮度是否柔和&#xff0c;还要考虑台灯是不是有做遮光式设计。没有遮光式设计的台灯&#xff0c;光源外露&#xff0c;灯光会直射孩子头部&#xff0c;孩子视线较低&#xff0c;很…

Unity 从2018升级为2021之后 IAP(内购插件)报错解决

从老项目升级为2021高版本之后报了个错 大概就是… the type iwindowsiap exists in both unityengine.purchasing.winrtcore, version0.0.0.0, 这种 具体的我也没粘贴全部过来 原因貌似是 PackManger里面的IPA包和项目自带的冲突了 解决方法&#xff1a; 删除项目文件夹下面…

新版100句学完7000雅思单词

新版100句学完7000雅思单词 1. As the medical world continues to grapple with what’s acceptable and what’s not, it is clear that companies must continue to be heavily scrutinized for their sales and marketing strategies.(剑桥雅思6) 随着医学界持续努力解决…

com.squareup.okhttp3:okhttp 组件安全漏洞及健康度分析

组件简介 维护者square组织许可证类型Apache License 2.0首次发布2016 年 1 月 2 日最新发布时间2023 年 4 月 23 日GitHub Star44403GitHub Fork9197依赖包5,582依赖存储库77,217 com.squareup.okhttp3:okhttp 一个开源的 HTTP 客户端库&#xff0c;可以用于 Android 和 Jav…

Linux中的进程、fork、进程状态、环境变量

1、进程 1.1 PCB 进程信息被放在一个叫做进程控制块的数据结构中&#xff0c;可以理解为进程属性的集合。课本上称之为PCB&#xff08;process control block&#xff09;&#xff0c;Linux操作系统下的PCB是: task_struct 在Linux中描述进程的结构体叫做task_struct。task_s…

锁的升级(Synchonized重量级转换):无锁--》偏向锁--》轻量级锁--》重量级锁

目录 线程的状态转换中锁的升级过程 三种锁的优缺点 无锁--》偏向锁--》轻量级锁--》重量级锁 这三个说的是Synchonized重量级转换 没有竞争偏向锁&#xff0c;轻微竞争轻量级锁&#xff0c;重度竞争重量级锁 线程的状态转换中锁的升级过程 就绪队列随时可能被…

递归学习(转载)

转载至 https://www.cnblogs.com/king-lps/p/10748535.html 为避免原文丢失&#xff0c;因此原文转载作者【三年一梦】的帖子 前言 相信不少同学和我一样&#xff0c;在刚学完数据结构后开始刷算法题时&#xff0c;遇到递归的问题总是很头疼&#xff0c;而一看解答&#xff0c…

大数据平台三大优势详解-行云管家

大数据平台三大优势详解 1、轻松进行数据共享 企业在管理以及快速发展过程中&#xff0c;有着越来越多的数据需要进行管理&#xff0c;如果单独管理则工作量巨大&#xff0c;且难免出现问题&#xff0c;同时共享难。因此需要大数据平台对数据进行统一管理&#xff0c;以及轻松…

Tag 标签 多标签生成、多标签不贴着

Tag 标签 多标签生成、多标签不贴着 多个标签 <el-table-column label"标签" align"center"><template slot-scope"scope"><el-tag type"success" //类型v-for"bsNoteLable in scope.row.bsNoteLables" //…

ar地铁运行原理三维仿真展示提高学员学习效果

轨道交通列车AR可视化教学是AR开发公司利用AR增强现实技术在轨道交通列车旁进行教学的方法。它通过将虚拟信息叠加到现实世界中&#xff0c;使学生能够更直观地理解和掌握相关知识。 轨道交通列车AR可视化教学是一种基于增强现实技术的教育工具&#xff0c;通过将虚拟模型与实际…

Python金币小游戏

游戏规则&#xff1a;移动挡板接住金币 游戏截图&#xff1a; 详细代码如下&#xff1a; import pygame.freetype import sys import randompygame.init() screen pygame.display.set_mode((600, 400)) pygame.display.set_caption(game) p 0 i1 0 s 0 t 0 f1 pygame.f…

​八路参考文献:[八一新书]许少辉.乡村振兴战略下传统村落文化旅游设计[M]北京:中国建筑出版传媒,2022.

​八路参考文献&#xff1a;&#xff3b;八一新书&#xff3d;许少辉&#xff0e;乡村振兴战略下传统村落文化旅游设计&#xff3b;&#xff2d;&#xff3d;北京&#xff1a;中国建筑出版传媒&#xff0c;&#xff12;&#xff10;&#xff12;&#xff12;&#xff0e;

Matlab(画图初阶)

目录 1.plot()函数 2. hold(添加新绘图是否保留旧绘图) 3. Plot Style 3.1 线型 3.2 标记 3.3 颜色 ​编辑 4. legend() 5.X 、Y and Title&#xff1f; 6. Text()和annotation() 7.line(创建基本线条) 7.1 基本语法 7.2 指定线条属性 7.3 更改线条属性 8.图像属性 8.1 …

php - fpm 请求达到max_children最大值后,新进入的请求工作流程

前言 偶然之间想了解下&#xff0c;php-fpm 请求达到max_children最大值后&#xff0c;新进入的请求怎么办&#xff1f;是抛出502还是等待前面的请求完成后&#xff0c;再将请求交给处理完毕的进程处理呢。 准备工作 运行环境&#xff1a;LNMP php 版本&#xff1a;php8.1 …

创新指南|CEO如何应对生成式AI带来的4大颠覆创新机遇

生成式AI是一种快速发展的颠覆式创新&#xff0c;可以帮助企业创新商业模式、提高效率和解锁商业价值。本研究介绍如何应对生成式AI技术带来的挑战和机遇&#xff0c;以及如何先发利用这种技术来超越竞争和组织创造力和效率。如果您想了解更多关于生成式AI的企业创新战略&#…

Debian 30 周年,生日快乐!

导读近日是 Debian 日&#xff0c;也是由伊恩-默多克&#xff08;Ian Murdock&#xff09;创立的 Debian GNU/Linux 通用操作系统和社区支持的 Debian 项目 30 周年纪念日。 不管你信不信&#xff0c;从已故的伊恩-默多克于 1993 年 8 月 16 日宣布成立 Debian 项目&#xff0c…

若依 vue中el-radio无法默认选中

网上看了很多方法都不管用, 即便是element官方示例方法也不行 解决方法: html <el-form-item label"是否公开" prop"isOpen"><el-radio-group v-model"form.isOpen"><el-radio :label"0">不公开</el-radio>…

不负众望!历时4年修炼,这本册子终于成书了!

承载着作者的厚望&#xff0c;掘金爆火小册同名读物《Spring Boot源码解读与原理剖析》正式出书&#xff01; 本书前身是掘金社区销量TOP的小册——《Spring Boot源码解读与原理剖析》&#xff0c;整个社区中有3600开发者都不约而同地选择了这本小册&#xff0c;也使它成为掘金…

深度学习入门(Python)学习笔记1

第1章 Python入门 1.1python是什么 Python是一个简单、易读、易记的编程语言&#xff0c;而且是开源的&#xff0c;可以免费地自由使用。 使用Python不仅可以写出可读性高的代码&#xff0c;还可以写出性能高&#xff08;处理速度快&#xff09;的代码。 再者&#xff0c;在…

司徒理财:8.30黄金原油今日最新行情分析及操作策略

黄金走势分析      从日线形态来看&#xff0c;昨晚经历了快速拉升&#xff0c;价格成功稳定在关键的1924压力位之上&#xff0c;最高甚至触及了1938的高点。这表明市场开启了新一轮走势的空间。在当天的日内交易中&#xff0c;我们应特别关注1925一线作为支撑&#xff0c;…