代码随想录训练营Day 40|力扣509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

1.斐波那契数

代码随想录

视频:手把手带你入门动态规划 | LeetCode:509.斐波那契数_哔哩哔哩_bilibili

代码:

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

 思路:

dp数组的含义:dp[i] 表示斐波那契数列的第i位

初始化:按照题意,dp[0]=0;dp[1]=1;

递推公式: dp[i] = dp[i-1]+dp[i-2];

遍历顺序:从左到右

我在做这道题的时候,没有好好审题,直接把dp[0]也赋值为1了,而且在求第0个,第一个dp数值时,就应该直接返回n了。如果不这样力扣会报错,什么堆栈异常()

2.爬楼梯

代码随想录

视频:带你学透动态规划-爬楼梯(对应力扣70.爬楼梯)| 动态规划经典入门题目_哔哩哔哩_bilibili

代码: 

class Solution {
public:int climbStairs(int n) {if(n <= 2) return n;vector<int> dp(n + 1,0); // dp[i]表示 爬到第i阶楼梯的方法数dp[1] = 1;dp[2] = 2;for(int i = 3; i <= n;i++){dp[i] = dp[i - 1] + dp[i - 2]; // 爬第i阶楼梯,只能从第i-1阶楼梯 和 第i-2阶楼梯 爬}return dp[n];}
};

 思路: 

dp数组的含义:dp[i] 表示爬到第i阶楼梯的方法数

初始化:按照题意,dp[1]=1;dp[2]=2;

递推公式: dp[i] = dp[i-1]+dp[i-2];

遍历顺序:从左到右

爬第i阶楼梯,只能从第i-1阶楼梯 和 第i-2阶楼梯 往上爬,因此其方法总数就等于 dp[i-1]+dp[i-2]。其实会发现爬楼梯的dp数组数值和递推公式和斐波那契数列是一样的。

3.使用最小花费爬楼梯 

代码随想录

视频讲解:动态规划开更了!| LeetCode:746. 使用最小花费爬楼梯_哔哩哔哩_bilibili

代码:

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {if(cost.size() <= 1) return 0;vector<int> dp(cost.size() + 1); // dp[i]表示爬到第i阶楼梯所用的最小花费dp[0] = 0;dp[1] = 0;for(int i = 2;i <= cost.size();i++){dp[i] = min(dp[i - 1] + cost[i - 1],dp[i - 2] + cost[i - 2]);}return dp[cost.size()];}
};

 思路:

dp数组的含义:dp[i] 表示爬到第i阶楼梯的最小花费

初始化:按照题意,dp[0]=0;dp[1]=0;

递推公式: dp[i] = min(dp[i - 1] + cost[i - 1],dp[i - 2] + cost[i - 2])

遍历顺序:从左到右

这道题,我出错在没有搞清楚题上求的是爬到顶楼的费用,也就是我得把所有的台阶都走完(而不是走到最后一个台阶),给定cost花费数组有cost.size()个元素,那我就得求dp数组下标为cost.size的元素的值,然后返回 。

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

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

相关文章

qt 布局学习笔记

目录 qt下载地址&#xff1a; widget 宽高 管理信息列表源码 c版&#xff1a; pro文件&#xff1a; qt 设置水平布局&#xff0c;里面有两个按钮&#xff0c;每个按钮就变的很宽&#xff0c;怎么设置按钮的精确位置 设置固定大小&#xff1a; 使用弹性空间&#xff08;…

高效掌控速卖通自养号测评:成本、步骤、技巧全方位掌握

在跨境电商的汹涌浪潮中&#xff0c;速卖通犹如一颗璀璨的领航星&#xff0c;引领着无数寻求海外拓展的企业和商家驶向国际市场的广阔海域。从最初的C2C模式起步&#xff0c;速卖通历经蜕变&#xff0c;如今已华丽转身成为B2C跨境电商领域的翘楚&#xff0c;承载着无数中国卖家…

【传知代码】基于图神经网络的知识追踪方法(论文复现)

前言&#xff1a;本文将深入探讨基于图神经网络的知识追踪方法&#xff0c;旨在通过构建知识图谱来捕捉知识之间的复杂关联&#xff0c;并利用图神经网络强大的表示学习能力来建模学生的学习过程。我们将首先介绍图神经网络的基本原理和关键技术&#xff0c;然后详细阐述如何将…

Sylvester矩阵、子结式、辗转相除法的三者关系(第二部分)

【三者的关系】 首先&#xff0c;辗转相除法可以通过Sylvester矩阵进行&#xff0c;过程如下&#xff08;以 m 8 、 l 7 m 8、l 7 m8、l7为例子&#xff09;。 首先调整矩阵中 a a a系数到最后面几行&#xff0c;如下所示&#xff1a; S ( a 8 a 7 a 6 a 5 a 4 a 3 a 2 …

使用logstash同步mysql 到es

下载安装Logstash 然后编写Logstash配置文件logstash.conf,注意mysql表一定要有主键&#xff0c;而且有更新时间字段 例如&#xff1a; input {jdbc {# 设置 MySql/MariaDB 数据库url以及数据库名称jdbc_connection_string > "jdbc:mysql://127.0.0.1:3306/mydb?useU…

现代前端工程化实践:Git、Husky、Commitlint与PNPM的协同作战

引言 Git Husky 与 Commitlint 是两个在 Git 工作流程中非常实用的工具&#xff0c;它们可以帮助团队维护代码质量和提交规范。Husky 是一个 Git 钩子管理器&#xff0c;允许你在仓库级别方便地配置钩子脚本&#xff1b;而 Commitlint 则是用来规范 Git 提交信息的工具&#x…

edge浏览器的网页复制

一些网页往往禁止复制粘贴&#xff0c;本文方法如下&#xff1a; 网址最前面加上 read: &#xff08;此方法适用于Microsoft Edge 浏览器&#xff09;在此网站网址前加上read:进入阅读器模式即可

【前端】web移动端进行监控是否完播 | 视频完播率设计

1、整体设计 1、前端播放监控&#xff1a; 使用移动端的前端播放器&#xff0c;比如 HTML5 video 标签或者第三方播放器&#xff08;如 Video.js 或者 H5Player&#xff09;。 在播放器中添加事件监听器来监控播放状态&#xff0c;例如 timeupdate、ended 等事件。 2、记录播…

跨境电商投放Facebook广告推广攻略!

在出海浪潮中&#xff0c;跨境电商已经成为企业连接不同市场、拓展国际业务的重要途径。Facebook&#xff0c;作为全球最大的社交平台之一&#xff0c;拥有超过20亿的活跃用户&#xff0c;为跨境卖家提供了一个无与伦比的营销舞台。有效利用Facebook广告&#xff0c;不仅能帮助…

MySQL导入SQL脚本---超详细介绍

1.新建xxx数据库&#xff0c;字符集选对。 2.在mysql安装目录下cmd进入小黑窗 3.执行mysql -uroot -p123456 --default-character-setutf8命令 4.use xxx; 5.source xxx.sql 执行完上面的命令等待结束就可以了 需要注意的是--default-character-setutf8&#xff0c;要不然可…

如何选择一款开放式耳机?六大独家选购技巧超详细汇总!

​喜欢户外活动的朋友们&#xff0c;你们都是懂得享受生活的达人吧&#xff01;想象一下&#xff0c;在户外活动时&#xff0c;如果能有一副既适合场景又提供超棒音乐体验的耳机&#xff0c;那该多完美啊&#xff01;这时候&#xff0c;开放式耳机就闪亮登场了&#xff01;它的…

Android 多语言

0. Locale方法 Locale locale Locale.forLanguageTag("zh-Hans-CN"); 执行如下方法返回字符串如下&#xff1a; 方法 英文下执行 中文下执行 备注 getLanguage()zhzhgetCountry()CNCNgetDisplayLanguage()zh中文getDisplayCountry()CN中国getDisplayName()zh (…

微前端框架 之 定义全局状态管理库(五)

假设你正在使用基于单页面应用&#xff08;SPA&#xff09;的微前端框架。以下简化一个应用之间共享状态的例子。 1. 使用发布/订阅模式 // globalStateManager.js class GlobalStateManager { constructor() { this.subscribers {}; this.state {}; } subscribe(key…

XGBoost算法详解:机器学习分类中的强力工具

课程链接&#xff1a;AI小天才&#xff1a;让你轻松掌握机器学习 引言&#xff1a; XGBoost&#xff08;Extreme Gradient Boosting&#xff09;是一种高效的机器学习算法&#xff0c;被广泛应用于分类、回归、排序等任务中。其优秀的性能和灵活性使得它成为了数据科学领域的瑰…

RocketMQ实战教程之常见概念和模型

RocketMQ实战教程之常见概念和模型 常见概念与模型 官方文档: https://rocketmq.apache.org/zh/docs/introduction/02concepts 1 常见概念[重点] 消息&#xff08;Message) 消息是 Apache RocketMQ 中的最小数据传输单元。生产者将业务数据的负载和拓展属性包装成消息发送…

JavaWeb-JS

目录 学习重点 什么是 JavaScript? Web标准 JS的引入方式 JS的基本语法 JS的函数 JS的对象 JS事件监听 学习重点 js 引入方式 js 基础语法 js 函数 js 对象 js 事件监听 什么是 JavaScript? Web标准 Web 标准也称为网页标准 &#xff0c;由一系列的标准组成&#xff0…

七年之痒!一个 PHP 程序员职业生涯的自述

大家好&#xff0c;我是码农先森。 今年刚好是我毕业的第七个年头&#xff0c;在婚姻感情当中都有一种「七年之痒」的说法&#xff0c;这次我把这个词「七年之痒」用一次在我的职业生涯复盘上。七年前我从告别校园&#xff0c;踏入互联网编程行业&#xff0c;七年后我依旧在编…

FFmpeg之转码

文章目录 概述transcode小结 概述 上一篇说了主要的流程&#xff0c;也就是ffmpeg_parse_options的流程&#xff0c;如下图&#xff1a; 红色箭头的流程说的差不多了&#xff0c;接下来看看绿色框框&#xff0c;也就是transcode的流程。 transcode 还是先给出我画的流程图&…

如何利用InputStream类实现文件读取与处理?

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

mysql - 为什么MySQL不建议使用NULL作为列默认值?

为什么MySQL不建议使用NULL作为列默认值&#xff1f; InnoDB有4中行格式&#xff1a; Redundant : 非紧凑格式,5.0 版本之前用的行格式,目前很少使用,Compact : 紧凑格式,5.1 版本之后默认行格式,可以存储更多的数据Dynamic , Compressed : 和Compact类似,5.7 版本之后默认使…