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

动态规划-740.删除并获取节点-力扣(LeetCode)

一、题目解析

根据这个示例1,选择删除4并获得4,那么3和5都会被删除掉且不会被获取,选择删除2并获得2,那么1和3都会被删除且不会获得,这样一看或许对这道题感觉无从下手,但我换一种表达形式你能看出些名堂来。我们将示例1重新按升序排好序,得到2,3,4,这时在一看之前的规则,是不是可以将其转化为不能取相邻的数据,这和我们的打家劫舍问题是不是相同的?我们通过对条件的理解将一道全新的题转化为我们熟悉的题。对于打家劫舍不熟悉的读者可以先移步观看我之前的博客,链接: 动态规划-LCR 089.打家劫舍-力扣(LeetCode)-CSDN博客

 二、算法原理

预处理:根据打家劫舍我们需要现将数据处理一下,先对原数组进行sort升序重新排列,然后用一个新的数组通过下标绝对映射,统计原数组中对应元素的总和,用于打家劫舍问题实现。

这里简单讲解一下,详情可以移步另一篇博客动态规划-LCR 089.打家劫舍-力扣(LeetCode)-CSDN博客

1.状态表示

f[i]表示:选到i位置时,i位置的值必选,此时获得的最大点数

g[i]表示:选到i位置时,i位置的值不选,此时获得的最大点数

2.状态转移方程

f[i]=g[i-1]+arr[i](这里的arr数组是统计重排序数组对应元素总和的数组)

g[i]=max(f[i-1],g[i-1])

3.初始化

f[0]=arr[0],g[0]=0

4.填报顺序

从左向右,两个表一起填

5.返回值

max(f[n-1],g[n-1])(这里的n是原数组的大小)

思考和实践都是不可或缺的,在思考后去实现,740. 删除并获得点数 - 力扣(LeetCode)

三、代码示例

class Solution {
public:int rob(vector<int>& arr) {int n = arr.size();vector<int> f(n),g(n,0);f[0] = arr[0];for(int i = 1;i<n;i++){f[i] = g[i-1]+arr[i];g[i] = max(f[i-1],g[i-1]);}return max(f[n-1],g[n-1]);}int deleteAndEarn(vector<int>& nums) {sort(nums.begin(),nums.end());int n = nums[nums.size()-1];vector<int> arr(n+1);for(int i = 0;i<nums.size();i++){arr[nums[i]] += nums[i];}return rob(arr);}
};

 

 

看到最后,如果对您有所帮助还请点赞、收藏、关注,点点关注不迷路,我们下期再见!

http://www.xdnf.cn/news/8398.html

相关文章:

  • ollama 部署模型休眠、释放问题
  • OpenJudge | 用二分法求方程的根
  • 怎么判断一个Android APP使用了Qt 这个跨端框架
  • 2步彻底卸载VScode
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.12.15-2024.12.20
  • 408提示
  • Linux入门(九)任务调度
  • Claude 4:一场AI代理革命的起点
  • 古文时空重构:当AI把课本诗词做成4D电影
  • day34 python深度学习训练优化实践:CPU vs GPU
  • 基于SpringBoot+Vue的足球青训俱乐部管理后台系统的设计与开发
  • Three.js与Babylon.js对比
  • Flyweight(享元)设计模式 软考 享元 和 代理属于结构型设计模式
  • AI+制造:中小企业的低成本智能化转型
  • 迅为3568开发板实操-HDF驱动配置 UART-配置 rk3568_uart_config.hcs
  • 2025期中考复现
  • 【ubuntu】Ubuntu安装 XTerminal和使用
  • Widget进阶
  • redis常用命令
  • Fastrace:Rust 中分布式追踪的现代化方案
  • 【Oracle】创建公共数据连接
  • Jouier 普及组十连测 R3
  • 【人工智能】低代码-模版引擎
  • Pluto实验报告——基于2ASK的简易的通信系统
  • 常见激活函数
  • debug一个cpu频率一直最低的问题
  • PyTorchviz 和 Graphviz:可视化 PyTorch 模型的利器
  • 第九天的尝试
  • LNCS-2009《Adaptive Sampling for $k$-Means Clustering》
  • postgresql 常用参数配置