当前位置: 首页 > news >正文

[动态规划] (十三) 简单多状态 LeetCode 740.删除并获得点数

[动态规划] (十三) 简单多状态: LeetCode 740.删除并获得点数

文章目录

      • [动态规划] (十三) 简单多状态: LeetCode 740.删除并获得点数
        • 题目解析
        • 解题思路
          • 状态表示
          • 状态转移方程
          • 初始化和填表顺序
          • 返回值
        • 代码实现
        • 总结

740. 删除并获得点数

image-20231108165402335

题目解析

(1) 给定一个整数数组。

(2) 选择一个nums[i],获得所有nums[i]的和,删除nums[i] - 1nums[i] + 1

(3) 一开始你有0个点数,返回你能获得的最大点数

解题思路

通过题目解析,我们发现这和我们之前做的打家劫舍和按摩师有一些共同之处。

假设一个数组是[1,2,3,4],如果我们选择了3,那就不能选择2和4。

那么,我们把这个重复出现的数字,归到同一下标位置,是不是就可以将它转换为打家劫舍问题呢?(预处理)我们来试试:

image-20231108202313691

我们可以取2-0-5-7或者2-8-12-24等等情况,这就和我们之前做的打家劫舍几乎一模一样了。

状态表示

dp[i]:按照往常的经验,以i为终点,可以获得的最大点数。

i位置,我们有可以选择,获取或者不获取

f[i]:表示获取i位置的点数

g[i]:表示不获取i位置的点数

状态转移方程

f[i]:当我们需要获取i位置的点数时,那么i-1位置必然不获取。

所以我们只用i-1之前的点数加上对应当前位置的点数即可。

f[i] = g[i-1] + nums[i]

g[i]:当我们不获取i位置时,那么i-1位置又可以获取,也可以不获取,我们只需要取最大值即可。对应状态表示,获取i-1位置就是f[i-1],不获取i-1就是g[i-1]

g[i] = max(f[i-1], g[i-1])
初始化和填表顺序
  • 初始化

因为我们在刚刚举例子时,发现新的数组会多出一个0位置的元素,所以我们可以多初始化一个虚拟节点,这可以让我们下标对应更加简单。

我们把虚拟出的节点初始化为0即可,容器在扩容时又会自动帮我们初始化为0,所以我们不需要手动初始化。

  • 填表顺序

从左到右。

返回值

多了一个虚拟节点,返回n位置的较大值即可。

看到这里,可以尝试手动实现代码,再来看下面的内容。


代码实现
class Solution {
public:int deleteAndEarn(vector<int>& nums) {//预处理const int cnt = 10001;int arr[cnt] = {0};for(auto e : nums) arr[e] += e;//创建dp表vector<int> f(cnt);vector<int> g(cnt);//初始化// f[0] = arr[0], g[0] = 0;//填表for(int i = 1; i < cnt; i++){f[i] = g[i-1] + arr[i];g[i] = max(f[i-1], g[i-1]);}//返回值return max(f[cnt-1], g[cnt-1]);}
};

image-20231108204316251

总结

细节1:多多联系我们之前做过的题,看看新的题与我们之前做过的题有没有什么通性。

细节2:预处理数组的空间我们比题目给的多扩了1个,所以返回值n位置即为,我们扩的容量-1。

相关文章:

[动态规划] (十三) 简单多状态 LeetCode 740.删除并获得点数

[动态规划] (十三) 简单多状态: LeetCode 740.删除并获得点数 文章目录 [动态规划] (十三) 简单多状态: LeetCode 740.删除并获得点数题目解析解题思路状态表示状态转移方程初始化和填表顺序返回值 代码实现总结 740. 删除并获得点数 题目解析 (1) 给定一个整数数组。 (2) 选…...

【K-means聚类算法】实现鸢尾花聚类

文章目录 前言一、数据集介绍二、使用步骤1.导包1.2加载数据集1.3绘制二维数据分布图1.4实例化K-means类&#xff0c;并且定义训练函数1.5训练1.6可视化展示2.聚类算法2.1.可视化生成3其他聚类算法进行鸢尾花分类 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器…...

什么是代理IP池?如何判断IP池优劣?

代理池充当多个代理服务器的存储库&#xff0c;提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务&#xff0c;而无需担心被检测或阻止的风险。代理池为各种在线活动&#xff08;例如网页抓取、安全浏览等&#xff09;提高后勤保障。 读完…...

【面经】讲一下线程池的参数和运行原理

线程池是Java中一种重要的并发工具&#xff0c;它可以帮助我们更好地管理线程&#xff0c;避免线程过多导致的系统开销和性能问题。线程池通过预先创建一定数量的线程&#xff0c;并将任务提交给这些线程执行&#xff0c;从而避免了频繁创建和销毁线程的开销。 线程池的参数主…...

针对图像分类的数据增强方法,离线增强,适合分类,无标签增强

针对图像分类的数据增强方法&#xff0c;离线增强&#xff0c;适合分类&#xff0c;无标签增强 代码&#xff1a; 改变路径即可使用 # 本代码主要提供一些针对图像分类的数据增强方法# 1、平移。在图像平面上对图像以一定方式进行平移。 # 2、翻转图像。沿着水平或者垂直方向…...

润色论文Prompt

你好&#xff0c;我现在开始写论文了&#xff0c;我希望你可以扮演帮我润色论文的角色我写的论文是关于xxxxx领域的xxxxx&#xff0c;我希望你能帮我检查段落中语句的逻辑、语法和拼写等问题我希望你能帮我检查以下段落中语句的逻辑、语法和拼写等问题同时提供润色版本以符合学…...

配置简单VLAN

1、 需求 &#xff1a; 1&#xff09;创建VLAN 10、20、30 2&#xff09;将端口加入VLAN 3&#xff09;查看VLAN信息 2、方案 使用eNSP搭建实验环境&#xff0c;如图所示。 3、步骤 实现此案例需要按照如下步骤进行。 1&#xff09;交换机创建VLAN 10、20、30 [sw1]vla…...

手机是否能登陆国际腾讯云服务器?

在当今社会&#xff0c;跟着互联网的开展&#xff0c;越来越多的用户开始运用云服务器来存储和处理数据。其间&#xff0c;腾讯云服务器作为国内知名的云服务器供给商&#xff0c;受到了广大用户的欢迎。可是&#xff0c;有一些用户可能还不清楚手机是否能登陆腾讯云服务器。本…...

5分钟Python安装实战(MAC版本)

最近在学习Chatgpt接口&#xff0c;官方提供三种方式调用Chatgpt接口&#xff0c;分别是curl、python、node.js&#xff1a;具体介绍我放在下方图片 因为熟悉Python&#xff0c;所以我选择了python这种方式&#xff0c;顺便记录下安装过程&#xff0c;整体并不复杂&#xff0c;…...

python自动化测试(十一):写入、读取、修改Excel表格的数据

目录 一、写入 1.1 安装 xlwt 1.2 增加sheet页 1.2.1 新建sheet页 1.2.2 sheet页写入数据 1.2.3 excel保存 1.2.4 完整代码 1.2.5 同一坐标&#xff0c;重复写入 二、读取 2.1 安装读取模块 2.2 读取sheet页 2.2.1 序号读取shee页 2.2.2 通过sheet页的名称读取she…...

【milkv】添加LCD屏GC9306

前言 本章介绍如何添加LCD屏GC9306驱动。 电路图 dts build\boards\cv180x\cv1800b_milkv_duo_sd\dts_riscv\cv1800b_milkv_duo_sd.dts &spi2 {status "okay";/delete-node/ spidev0;gc9306: gc93060{compatible "sitronix,gc9306";reg <0&g…...

设计模式--开篇

什么是设计模式 设计模式是软件开发过程中面临的通用问题的解决方案。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 按使用目的分类 创建型–主要用于创建对象 单例模式-某个类只能有一个实例&#xff0c;提供一个全局的访问点工厂方法模式-创建…...

Android 原生进度条ProgressBar【自带】【水平风格】自定义

由于不想从零开始自定义&#xff0c;Android原生的进度条就已经很够用了呀&#xff01; <ProgressBar​android:id"id/pb_storage"​style"style/Widget.AppCompat.ProgressBar.Horizontal"​android:layout_width"match_parent"​android:l…...

Nginx实现tcp代理并支持TLS加密实验

Nginx源码编译 关于nginx的搭建配置具体参考笔者之前的一篇文章&#xff1a;实时流媒体服务器搭建试验&#xff08;nginxrtmp&#xff09;_如何在线测试流媒体rtmp搭建成功了吗-CSDN博客中的前半部分&#xff1b;唯一变化的是编译参数&#xff08;添加stream模块并添加其对应ss…...

vue3+setup 解决:this.$refs引用子组件报错 is not a function

一、如果在父组件中以下四步都没问题的话&#xff0c;再看下面步骤 二、如果父组件引用的是index页面 请在 头部加上以下代码 &#xff08;如果是form页面请忽略这一步&#xff09; <template> <a-modalv-model:visible"visible"title"头部名称&…...

189. 轮转数组

给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4…...

com.alibaba:tools:jar com.alibaba:jconsole:jar

com.alibaba:tools:jar com.alibaba:jconsole:jar...

洛谷 P1020 [NOIP1999 普及组] 导弹拦截【一题掌握三种方法:动态规划+贪心+二分】最长上升子序列LIS解法详解

P1020 [NOIP1999 普及组] 导弹拦截 前言题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目分析注意事项 代码动态规划&#xff08;NOIP要求&#xff1a;时间复杂度O(n^2^)&#xff09;贪心二分&#xff08;O(nlgn)&#xff09; 后话额外测试用例样例输入 #1…...

golang的管道阻塞问题

package mainimport ("fmt""sync"//"time" ) var wg sync.WaitGroup func writeData(intchan chan int){defer wg.Done()for i : 1; i < 9; i {intchan<-ifmt.Println("写入的数据为&#xff1a;",i)//time.Sleep(time.Seco…...

用HTML + javaScript快速完成excel表格信息除重并合并

今天突然接到一个工作&#xff0c;要把两个存储在.xls的主体信息表&#xff0c;除重后合并成一个主体信息表&#xff0c;并且补充主体类型和所在县区这两列信息。 完成这项工作的方法有很多&#xff0c;如果信息表中的信息量不大的话&#xff0c;手工处理一下也行&#xff0c;如…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...