力扣740删除并获得整数和力扣1173第N个泰波那契数

力扣740删除并获得整数

给你一个整数数组 nums ,你可以对它进行一些操作。

每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。

开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。

示例 1:

输入:nums = [3,4,2]
输出:6
解释:
删除 4 获得 4 个点数,因此 3 也被删除。
之后,删除 2 获得 2 个点数。总共获得 6 个点数。
示例 2:

输入:nums = [2,2,3,3,3,4]
输出:9
解释:
删除 3 获得 3 个点数,接着要删除两个 2 和 4 。
之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。
总共获得 9 个点数。

提示:

1 <= nums.length <= 2 * 104
1 <= nums[i] <= 104

题目分析

选择一个任意点数nums[i]删除并获得他的点数,同时删除等于nums[i]+1和nums[i]-1的所有点数,此次删除并不能获得点数,即损失了他们的点数,求能获得的最大点数

解题思路

利用动态规划的思想
当我们选择了一个点数之后,要把这个点数都选完才能最大减少损失,并且这个点数的左右相邻点数都将损失,即我们不能选择连续的点数
听到这里大家有没有一丝熟悉的感觉,没错,与打家劫舍的问题类似,没做过的请移步打家劫舍
1.首先我们求出数组中的最大点数,另定义一个数组sum用来存放每个点数与其出现次数的乘积
2.令定义一个函数与打家劫舍源码一样
3.将sum代入函数中,返回动态规划的值

代码实现

class Solution {
private:int rob(vector<int>&nums){int n=nums.size();vector<int>dp(n+1,0);dp[0]=0;dp[1]=nums[0];for(int i=2;i<=n;i++){dp[i]=max(dp[i-1],dp[i-2]+nums[i-1]);}return dp[n];}
public:int deleteAndEarn(vector<int>& nums) {int maxval=0;for(int val:nums){maxval=max(maxval,val);}vector<int>sum(maxval+1);for(int val:nums){sum[val]+=val;}return rob(sum);}
};

力扣1173第N个泰波那契数

泰波那契序列 Tn 定义如下:

T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2

给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

示例 1:

输入:n = 4
输出:4
解释:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
示例 2:

输入:n = 25
输出:1389537

提示:

0 <= n <= 37
答案保证是一个 32 位整数,即 answer <= 2^31 - 1。

题目分析

根据公式求得第n个数

解题思路

利用动态规划的思想
注意数组越界的问题,初始化定义dp数组的大小要为n+3
优化可以用滚动数组的思想

代码实现

class Solution {
public:int tribonacci(int n) {vector<int>dp(n+3,0);dp[0]=0;dp[1]=1;dp[2]=1;for(int i=3;i<=n;i++){dp[i]=dp[i-1]+dp[i-2]+dp[i-3];}return dp[n];}
};

代码优化

class Solution {public int tribonacci(int n) {if (n == 0) {return 0;}if (n <= 2) {return 1;}int p = 0, q = 0, r = 1, s = 1;for (int i = 3; i <= n; ++i) {p = q;q = r;r = s;s = p + q + r;}return s;}
}

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

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

相关文章

systemverilog功能覆盖率

1 iff 如过满足条件则采样&#xff0c;iff可以理解为if covergroup iff_cov;coverpoint tr.data iff(!vif.reset) ; //复位时不采样 endgroup2 coverpoint和bin covergroup name_bin ;coverpoint tr.kind {bins zero {0}; //1个bin 代表kind 0bins low {[1:3]…

(十三)C++自制植物大战僵尸游戏多用户存档实现(二)

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs UserData.h 在头文件中定义了枚举类型openUserDataReturnType&#xff0c;用于表示打开用户数据文件的返回状态。FileExistError表示文件存在但是打开错误&#xff0c;FileExistCorrect表示文件在且正确&#xff0…

如何进行景气分析

景气分析是一种短期经济分析方法。主要分析短时间内&#xff08;一般指一年内&#xff0c; 或几个月内&#xff09;经济运行的态势&#xff0c;包括当前的状态和未来的趋势。景气分析可以为宏观经济政策提供重要的决策与参考信息&#xff0c;例如根据经济运行的方向、强弱可建议…

概念理解: DDR的寻址容量设计

主要内容&#xff1a;DDR寻址容量设计的概念理解示例。 DDR的数据存储在不同的bank上&#xff0c;你知道具体是如何通过数据总线和地址总线的配合&#xff0c;拿到所需的数据吗&#xff1f;通过下面这样一个简单的问题&#xff0c;我们来逐渐了解这个过程的实现。 DDR…

C++11 玩家不得不学的语法集 [持续更新-建议收藏]

文章目录 1.std::function 开启函数式编程之路2.std::bind 灵活处理函数调用和传参3. std::ref 传递引用的必要包装4.std::thread 标准库的多线程5.std::packaged_task 封装函数为可异步调用的对象[待续。。。] 1.std::function 开启函数式编程之路 std::function 是 C 标准库…

LeetCode 热题 100 题解:普通数组部分

文章目录 题目一&#xff1a;最大子数组和&#xff08;No. 53&#xff09;题解 题目二&#xff1a;合并区间&#xff08;No. 56&#xff09;题解 题目三&#xff1a;轮转数组&#xff08;No. 189&#xff09;题解 题目四&#xff1a;除自身以外数组的乘积&#xff08;No. 238&a…

MySql运维篇

目录 一.日志 1.1日志分类 1.2Error Log 1.3BinaryLog 1.4SlowQuery Log 二.备份 2.1备份原因 2.2备份目标 2.3备份技术 2.3.1物理备份 2.3.2逻辑备份 2.4备份方式 2.4.1完全备份 2.4.2增量备份 2.4.3差异备份 2.5备份环境准备 2.6完全备份实验 2.6.1完全备…

Android 一键唤醒应用

Android 一键唤醒应用 最近收到客户需求&#xff0c;需要设备实现一键唤醒应用功能&#xff0c;本次以录音机为例&#xff0c;一键唤醒应用功能具体修改参照如下&#xff1a; /frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java public…

12.Ribbon饥饿加载

Ribbon默认是懒加载的&#xff0c;第一次使用Ribbon访问的时候才会去实例化对象&#xff0c;所以第一次访问比较耗时。 ribbon:eager-load:enabled: true # 开启饥饿加载clients: user-service #对user-service这个服务饥饿加载 多个微服务的写法&#xff1a; ribbon:eager-loa…

https协议的加密方式详解

各位大佬能多多点赞关注评论收藏&#xff0c;球球各位大佬们了&#xff01;&#xff01; &#xff01; 目录 1.为什么要加密&#xff1f; 2.如何加密 1.密钥&#xff08;yue,第四声&#xff09; 2.对称加密 3.非对称加密 4.公证机构 3.总结 1.为什么要加密&#xff1f;…

点云语义分割:DELA代码解读

论文标题&#xff1a; Decoupled Local Aggregation for Point Cloud Learning 代码地址&#xff1a;https://github.com/Matrix-ASC/DeLA 1. Dataloader 数据导入流程&#xff1a; 预处理得到.pth文件 -> S3DIS类定义 -> 根据配置文件S3DIS类实例化 -> 通过Dataload…

趋势分析 一元线性回归及显著性检验 GIS方法 Slope

slope斜率计算公式&#xff1a; 假设有三年的NDVI图像 加载3年栅格数据&#xff0c;公式中n取3计算分子左边&#xff1a; 3*(1*"1990.tif"2*"1991.tif"3*"1992.tif") 计算分子右边&#xff1a; 6*("1990.tif""1991.tif"&q…

【机器学习算法】穿越神经网络的迷雾:深入探索机器学习的核心算法

目录&#x1f339; 1. 神经元结构&#xff1a;2. 神经网络结构&#xff1a;3. 前向传播&#xff08;Forward Propagation&#xff09;&#xff1a;4. 损失函数&#xff08;Loss Function&#xff09;&#xff1a;5. 反向传播&#xff08;Backpropagation&#xff09;&#xff1…

算法课程笔记——STL题目

长度为2的字符串&#xff0c;当in下标为一&#xff0c;也就是\n,当i&#xff01;n&#xff0c;就是输出空格 &&且 city从citys里面取 加速后就不能混用scanf

货币银行学-货币需求

货币需求 货币需求影响因素货币交易性媒介职能如何影响实际货币需求 货币需求影响因素 货币需求受到以下因素的影响&#xff1a; 实际收入&#xff1a;当实际收入增加时&#xff0c;人们需要更多的货币来进行交易&#xff0c;从而产生了对货币的需求。 利率&#xff1a;利率的…

CoFSM基于共现尺度空间的多模态遥感图像匹配方法--论文阅读记录

目录 论文 Multi-Modal Remote Sensing Image Matching Considering Co-Occurrence Filter 参考论文&#xff1a;SIFT系列论文&#xff0c; SIFT Distinctive Image Features from Scale-Invariant Keypoints&#xff0c;作者&#xff1a;David G. Lowe 快速样本共识算法…

汇智知了堂晨会聚焦:NAS应用如何赋能网络安全实战

在近期汇智知了堂网络安全75班的晨会上&#xff0c;一场关于NAS应用的深入分享完美展开。学员们以饱满的热情投入到这场安全讨论中&#xff0c;共同探索网络安全的新天地。 此次分享会聚焦于NAS的应用&#xff0c;旨在帮助学员们更好地了解NAS的定义与功能&#xff0c;掌握其在…

52.基于SpringBoot + Vue实现的前后端分离-房屋租赁系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的房屋租赁系统设计与实现管理工作系统…

【Linux系统化学习】线程控制

目录 前言 POSIX线程库 线程控制 创建线程 线程终止 pthread_exit()函数 pthread_cancel()函数&#xff08;会在下面线程等待部分详解&#xff09; 线程等待 pthread_join()函数 获取线程退出码 分离线程 线程取消(pthread_cancel()函数&#xff09; 线程ID及进程…

open Gauss 数据库-06 openGauss数据库安全指导手册5.0.0

发文章是为了证明自己真的掌握了一个知识&#xff0c;同时给他人带来帮助&#xff0c;如有问题&#xff0c;欢迎指正&#xff0c;祝大家万事胜意&#xff01; 目录 前言 openGauss数据库安全指导 1 用户权限控制 1.1 实验介绍 1.1.1 关于本实验 1.1.2 实验目的 1.2 用户…