代码随想录算法训练营第38天 | 509.斐波那契数, 70。爬楼梯, 746.使用最小花费爬楼梯

Leetcode - 509:斐波那契数

题目:

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n) 。

示例 1:

输入:n = 2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1

示例 2:

输入:n = 3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2

示例 3:

输入:n = 4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3

笔记:

状态转移方程已经给出,需要注意n = 0的情况,如果不在初始化之前进行一个判断会导致数组越界报错:

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

Leetcode - 70:爬楼梯

题目:

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

笔记:

这道题就不需要进行特判了因为题目中已经给出了数据的范围不会等于0,这里可能有一个点会不懂就是为什么res[0] = 1呢?因为我们要等上第二级台阶需要有两种方式,我们的状态转移方程:res[i] = res[i - 1] + res[i - 2],所以我们就认定res[0] = 1,以便于后续处理。

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

Leetcode - 746:花最小花费爬楼梯

题目:

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

示例 1:

输入:cost = [10,15,20]
输出:15
解释:你将从下标为 1 的台阶开始。
- 支付 15 ,向上爬两个台阶,到达楼梯顶部。
总花费为 15 。

示例 2:

输入:cost = [1,100,1,1,1,100,1,1,100,1]
输出:6
解释:你将从下标为 0 的台阶开始。
- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。
- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。
- 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。
- 支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。
- 支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。
- 支付 1 ,向上爬一个台阶,到达楼梯顶部。
总花费为 6 。

笔记:

dp[i]的含义:到达当前层所花费的最小花费,

初始化:这里我们可以选择从0级或1级出发所以dp都初始化为0可以。

状态转移方程:dp[i] = dp[i - 1] + cost[i - 1],  dp[i - 2] + cost[i - 2]

遍历顺序:从小到大即可

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {if(cost.size() == 2)    return min(cost[0], cost[1]);vector<int> res(cost.size() + 1, 0);res[0] = 0;res[1] = 0;for(int i = 2; i <= cost.size(); i++){res[i] = min(res[i - 2] + cost[i - 2], res[i - 1] + cost[i - 1]);}return res[cost.size()];}
};

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

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

相关文章

协程的好处

轻量级&#xff1a;协程是比线程更轻量级的任务单元&#xff0c;它们在应用程序中的创建和销毁的开销较低。相比于线程&#xff0c;可以创建大量的协程而不会造成显著的资源消耗。 协作式调度&#xff1a;协程采用协作式调度方式&#xff0c;即协程主动让出执行权给其他协程&am…

实现公网数据传输给内网(使用frp)

如果你想在内网设备2上运行 FRP 服务器端&#xff08;frps&#xff09;&#xff0c;在内网设备3上运行 FRP 客户端&#xff08;frpc&#xff09;&#xff0c;并使用公网设备1来完成数据传输&#xff0c;你需要通过公网设备1来访问设备2&#xff0c;然后设备2再转发请求到设备3。…

Android Studio Iguana | 2023.2.1 补丁 1

Android Studio Iguana | 2023.2.1 Canary 3 已修复的问题Android Gradle 插件 问题 295205663 将 AGP 从 8.0.2 更新到 8.1.0 后&#xff0c;任务“:app:mergeReleaseClasses”执行失败 问题 298008231 [Gradle 8.4][升级] 由于使用 kotlin gradle 插件中已废弃的功能&#…

C语言例1-3:设 int a; ,语句 for(a=0;a==0;a++); 和语句 for(a=0;a=0;a++); 执行的循环次数分别是

答案&#xff1a;1,0 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("1\n");} return 0; } 结果如下&#xff1a; 代码如下&#xff1a; #include<stdio.h> int main(void) {int a;for(a0;a0;a){printf("…

手写三维点云配准的迭代最近点(ICP)算法

在本篇博客中,主要深入研究迭代最近点(ICP)算法,特别是针对三维点云配准的实现。分析一个C++代码片段并解释其关键组成部分。(主要参考高博的ICP算法) 简介 ICP是计算机视觉和机器人领域广泛使用的技术,用于将两组三维点进行配准。其主要应用是将一组观测点与参考模型进…

深度剖析Redis持久化机制:RDB与AOF的双轮驱动与混合策略

引言&#xff1a; 在现代分布式系统中&#xff0c;Redis凭借其出色的性能与丰富的数据结构&#xff0c;已成为缓存、队列、会话存储等场景的首选解决方案。然而&#xff0c;作为内存数据库&#xff0c;Redis如何在断电、重启等意外情况中确保数据的持久性呢&#xff1f;答案就…

京东云8核16G服务器配置租用优惠价格1198元1年、4688元三年

京东云轻量云主机8核16G服务器租用优惠价格1198元1年、4688元三年&#xff0c;配置为8C16G-270G SSD系统盘-5M带宽-500G月流量&#xff0c;华北-北京地域。京东云8核16G服务器活动页面 yunfuwuqiba.com/go/jd 活动链接打开如下图&#xff1a; 京东云8核16G服务器优惠价格 京东云…

杰理芯片AC79——物联网远程点亮/关闭LED灯

杰理芯片的封装简直太香了&#xff08;比STM32香多了&#xff09;&#xff0c;SDK也封装得很好&#xff0c;对于我这种手残党简直不要太友好。赶紧学起来&#xff0c;快速实现你想要的功能吧&#xff01; 芯片选型 杰理AC79 资料文档 环境搭建以及点亮第一盏灯请访问&#x…

【一】DDR3基础知识与IMG IP

【一】DDR3基础知识与IMG IP 一、DDR3的基本知识 1、DDR3全称为第三代双倍速率同步动态随机存储器 特点&#xff1a;掉电无法保存数据&#xff0c;需要周期性的刷新&#xff1b;时钟上升沿和下降沿都在传输数据&#xff1b;突发传输&#xff0c;突发长度burtst length一般为…

C++之STL整理(6)之string 用法(拼接、查找、替换、比较、截取子串)整理

C之STL整理&#xff08;6&#xff09;之string 用法&#xff08;拼接、查找、替换、比较、截取子串&#xff09;整理 注&#xff1a;整理一些突然学到的C知识&#xff0c;随时mark一下 例如&#xff1a;忘记的关键字用法&#xff0c;新关键字&#xff0c;新数据结构 C 的string…

Error: Cannot find module ‘@rollup/rollup-win32-x64-msvc‘

1.背景 新项目需要使用vite搭建一个v3项目,之前也弄过,但项目创建后却一直无法跑起来,大聪明的我一直没有注意到这个问题 2.解决步骤 方案1:删除node_modules和package-lock.json文件重新npm install下包,部分码农通过这个步骤可解决 方案2:node版本或者npm版本不对,或者没…

更新一条SQL的执行流程

在 MySQL中&#xff0c;条更新 SQL 语句执行的过程通常包括以下主要步骤: 1.客户端发送请求: 客户端应用程序(如数据库连接器或应用程序)构建一条 UPDATE SQL 语句&#xff0c;并将其发送到 MySOL 服务器端。 2.查询解析和优化: MySQL 服务器接收到请求后&#xff0c;先进行语法…

【软考】防火墙技术

目录 1. 概念2. 包过滤防火墙3. 应用代理网关防火墙4. 状态检测技术防火墙 1. 概念 1.防火墙(Firewall)是建立在内外网络边界上的过滤封锁机制&#xff0c;它认为内部网络是安全和可信赖的&#xff0c;而外部网络是不安全和不可信赖的。2.防火墙的作用是防止不希望的、未经授权…

Vue3:快速上手路由器

本人在B站上关于vue3的尚硅谷的课程&#xff0c;以下是整理一些笔记。 一.路由器和路由的概念 在 Vue 3 中&#xff0c;路由&#xff08;Router&#xff09;和路由器&#xff08;Router&#xff09;是两个相关但不同的概念。 1. 路由&#xff08;Router&#xff09;&#xff…

LeetCode.2908. 元素和最小的山形三元组 I

题目 2908. 元素和最小的山形三元组 I 分析 首先&#xff0c;看到这道题&#xff0c;第一反应就是暴力方法&#xff0c;三层for循环&#xff0c;枚举每一种情况&#xff0c;代码如下 class Solution {public int minimumSum(int[] nums) {int min Integer.MAX_VALUE;for(i…

SHELL(03)

SHELL(02) 中断控制 [ break ] 中断 跳出当前所在的循环体 , 执行循环体后的语句块可以结束整个循环 [ continue ] 继续 跳过循环体内余下的语句 , 重新判断条件以决定是否需要执行下一次循环结束当前循环 , 进入下次循环 [ exit ] 退出 退出脚本结束循环以及整个脚本 …

基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的学生选课系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

线程池详解、核心参数、拒绝策略

什么是线程池 线程池是一种池化技术&#xff0c;它预先创建一组线程&#xff0c;用于执行异步任务。当有新任务到来时&#xff0c;线程池可以立即分配一个线程来处理&#xff0c;而不需要临时创建。这样可以减少因为频繁创建和销毁线程而导致的开销。 线程池的应用场景 高并…

2024年腾讯云4核8G12M轻量应用服务器测评_CPU内存带宽系统盘

腾讯云4核8G服务器价格&#xff1a;轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线&#xff1f;支持30个并发数&#xff0c;可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

laravel(源码笔记) request-response 执行过程

request capture SymfonyRequest::createFromGlobals() createRequestFromFactory如果是form提交的方式&#xff0c;则创建Symfony Package里提供的 ParameterBag对象包&#xff0c;处理请求。 createFromBase duplicate 克隆请求&#xff0c;并重设一些属性 response run…