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

删除并获得点数

问题描述

删除并获得点数

在这里插入图片描述

解题思路

本题的解题思路就是将我们原问题中的数据进行重新整理,统计到一个用数组实现的哈希表中,哈希表中记录原数组中出现的每一个元素的个数。然后我们再对这个数组用打家劫舍模型处理即可
在这里插入图片描述

确定本题的状态表示

dp[i]表示的是

确定本题的状态转移方程

根据已知条件:dp[0]=0,dp[1]=1,dp[2]=1
本题的状态转移方程是:

填表求值

根据初始条件和状态转移方程,确定填表顺序,进而逐步填满dp表,最终返回题目要的结果

代码实现

class Solution {
public:int deleteAndEarn(vector<int>& nums) {const int N = 10001;// 1. 预处理int arr[N] = {0};for(auto x : nums) arr[x] += x;// 2. 在 arr 数组上,做一次“打家劫舍”问题// 创建 dp 表vector<int> f(N);auto g = f;// 填表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]);}
};

自己写的

class Solution {
public:int deleteAndEarn(vector<int>& nums) {const int N=10001;vector<int> hash(N,0);vector<int> f(N),g(N);f[0]=hash[0];g[0]=0;for(auto & x:nums) hash[x]+=x;for(int i=1;i<N;i++){f[i]=g[i-1]+hash[i];g[i]=max(f[i-1],g[i-1]);}return max(f[N-1],g[N-1]);}
};
http://www.dtcms.com/a/337511.html

相关文章:

  • 线程间通信(互斥锁,死锁,信号量)
  • 148-基于Python的2024物流年度销售收入数据可视化分析系统
  • PYTHON让繁琐的工作自动化-函数
  • 功能测试相关问题
  • 使用空模型实例调用辅助函数,确定在量化过程中哪些层会被跳过(43)
  • 实现make/makefile
  • Android RxBinding 使用指南:响应式UI编程利器
  • AI智能的“进化史”:从弱人工智能到通用人工智能的跨越
  • Linux中基于Centos7使用lamp架构搭建个人论坛(wordpress)
  • [Oracle数据库] Oracle 进阶应用
  • 【完整源码+数据集+部署教程】织物缺陷检测系统源码和数据集:改进yolo11-RevCol
  • 51单片机-驱动74HC595芯片实现IO口扩展模块教程
  • C++STL之list详解
  • MySQL 运算符详解:逻辑、位运算与正则表达式应用
  • CSS:水平垂直居中
  • 蔬菜批发小程序:生产商的数字化转型利器——仙盟创梦IDE
  • 吴恩达 Machine Learning(Class 1)
  • Fluss:颠覆Kafka的面向分析的实时流存储
  • 深入解析Kafka消费者重平衡机制与性能优化实践指南
  • 【Java基础】反射,注解,异常,Java8新特性,object类-详细介绍
  • 民俗博物馆如何选择数字技术?交互体验如何创新文化传播方式?
  • Effective C++ 条款48:认识模板元编程
  • 高并发网络编程实战:深入理解epoll客户端的事件驱动模型
  • Python字典dict的初始化方法
  • 亚马逊合规风暴升级:三类账号风险预警与防御体系构建
  • 图论Day5学习心得
  • 晨控CK-GW08S与欧姆龙PLC配置Ethernet/IP通讯连接手册
  • CAN总线的安全性
  • fit函数
  • 我们为什么需要时序数据库?