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

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

目录

509.斐波那契数

动态规划五部曲:

        1.确定dp数组(dp table)以及下标的含义

        2.确定递推公式

        3.dp数组如何初始化

        4.确定遍历顺序

        5.举例推导dp数组

70.爬楼梯

动态规划五部曲:

        1.确定dp数组(dp table)以及下标的含义

        2.确定递推公式

        3.dp数组如何初始化

        4.确定遍历顺序

        5.举例推导dp数组

746.使用最小花费爬楼梯

动态规划五部曲:

        1.确定dp数组(dp table)以及下标的含义

        2.确定递推公式

        3.dp数组如何初始化

        4.确定遍历顺序

        5.举例推导dp数组


509.斐波那契数

题目链接:509. 斐波那契数 - 力扣(LeetCode)

动态规划五部曲:

        1.确定dp数组(dp table)以及下标的含义

                dp[i]表示第i项斐波那契数列

        2.确定递推公式

                第i项斐波那契数列 = 前两项之和,即dp[i] = dp[i-1] + dp[i-2];

        3.dp数组如何初始化

                递推公式的i = 0和i = 1不符合递推公式,且是最边界情况,特别处理,

         即dp[0] = 0,dp[1] = 1;

        4.确定遍历顺序

                从第三个数据位置开始遍历

        5.举例推导dp数组

                dp[2]、dp[3]符合,递推到dp[...]都可行

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

70.爬楼梯

题目链接:70. 爬楼梯 - 力扣(LeetCode)

动态规划五部曲:

        1.确定dp数组(dp table)以及下标的含义

                dp[i]表示第i个台阶的方案数

        2.确定递推公式

               1阶:1

                2阶:2

                3阶:先走一步,如果一步走一阶,剩2阶,方案数为2,

                        如果一步走两阶,剩1阶方案数为1,方案数总共2+1 = 3

                4阶:先走一步,如果一步走一阶,剩3阶,方案数为3,

                        如果一步走两阶,剩2阶方案数为2,方案数总共3+2 = 5

                5阶:先走一步,如果一步走一阶,剩4阶,方案数为5,

                        如果一步走两阶,剩3阶方案数为3,方案数总共5+3 = 8

                总结:当前台阶i的方案数 = i-1台阶方案数 +i-2台阶方案数

                即,dp[i] = dp[i-1] + dp[i-2]

        3.dp数组如何初始化

                递推公式的i = 1和i = 2不符合递推公式,且是最边界情况,特别处理,

         即dp[1] = 1,dp[2] = 2;

        4.确定遍历顺序

                从第三个数据位置开始遍历

        5.举例推导dp数组

                第二步推到过了可行。

class Solution {
public:int climbStairs(int n) {vector<int> dp(n+10);dp[1] = 1;dp[2] = 2;for(int i=3; i<=n; i++){dp[i] = dp[i-1] + dp[i-2];	// i-1台阶的方案数 +i-2台阶的方案数 }   return dp[n];}
};

746.使用最小花费爬楼梯

题目链接:746. 使用最小花费爬楼梯 - 力扣(LeetCode)

动态规划五部曲:

        1.确定dp数组(dp table)以及下标的含义

                dp[i]表示到达第i个台阶所花的最小费用

        2.确定递推公式

                0阶:0元。

                1阶:0元。

                2阶:min(到达(2-1)阶的费用+(2-1)阶跳的费用 , 到达(2-2)阶的费用 +(2-2)阶跳的费用)。

                3阶:min(到达(3-1)阶的费用+(3-1)阶跳的费用 , 到达(3-2)阶的费用 +(3-2)阶跳的费用)。

                4阶:min(到达(4-1)阶的费用+(4-1)阶跳的费用 , 到达(4-2)阶的费用 +(4-2)阶跳的费用)。

                整体看感觉思路可行:即,dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])。

        3.dp数组如何初始化

                第0阶和第1阶的为起点,不需要花费价钱,故dp[0] = 0, dp[1] = 0。

        4.确定遍历顺序

                从第三个数据位置开始遍历

        5.举例推导dp数组

                按预期,数据是从第0个台阶依次到第n个台阶(顶点)的变化,所以数据是递推过去的,担心min()可能取0的值,验证了i = 2的程序,和i = 3的清楚,数据按预测的递推过程进行变化,可行。

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {vector<int> dp(cost.size()+10);dp[0] = 0;dp[1] = 0;int n = cost.size();for(int i=2; i<=n; i++){// i-1往上爬 或者i-2往上爬,取最小dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]); // 通过这个输出+题目信息把"<n"改成了"<=n",了解到n-1是台阶,而不是到顶// cout<<dp[i]<<' '<<dp[i-1]+cost[i-1]<<' '<<dp[i-2]+cost[i-2]<<'\n';   }return dp[n];}
};

相关文章:

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

目录 509.斐波那契数 动态规划五部曲&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义 2.确定递推公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数组 70.爬楼梯 动态规划五部曲&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;…...

【2024年华为OD机试】 (A卷,100分)- 总最快检测效率(Java JS PythonC/C++)

一、问题描述 题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同&#xff0c;采样效率为 N 人/小时。由于外界变化&#xff0c;采样员的效率会以 M 人/小时为粒度发生变化&#xff0c;M 为采样效率浮动粒度&#xf…...

【大数据】Apache Superset:可视化开源架构

Apache Superset是什么 Apache Superset 是一个开源的现代化数据可视化和数据探索平台&#xff0c;主要用于帮助用户以交互式的方式分析和展示数据。有不少丰富的可视化组件&#xff0c;可以将数据从多种数据源&#xff08;如 SQL 数据库、数据仓库、NoSQL 数据库等&#xff0…...

LabVIEW调用不定长数组 DLL数组

在使用 LabVIEW 调用 DLL 库函数时&#xff0c;如果函数中的结构体包含不定长数组&#xff0c;直接通过 调用库函数节点&#xff08;Call Library Function Node&#xff09; 调用通常会遇到问题。这是因为 LabVIEW 需要与 DLL 中的数据结构完全匹配&#xff0c;而包含不定长数…...

MySQL 17 章——触发器

在实际开发中&#xff0c;我们经常会遇到这样的情况&#xff1a;有2个或者多个相关联的表&#xff0c;比如商品信息表和库存信息表&#xff0c;分别存放在两个不同的数据表中&#xff0c;我们在添加一条新商品记录的时候&#xff0c;为了保证数据的完整性&#xff0c;必须同时在…...

面向对象分析与设计Python版 面向对象设计方法

文章目录 前言一、职责驱动设计二、职责驱动设计-案例 前言 面向对象设计目标&#xff1a;在面向对象分析建立的领域模型的基础上&#xff0c;定义对象操作&#xff08;职责&#xff09;。为对象分配职责的方法有&#xff1a; 职责驱动设计遵循GRASP设计原则&#xff08;Gene…...

GB/T 19582.1-2008主要内容

标准背景与概述 GB/T 19582.1-2008是由中国国家标准化管理委员会发布的国家标准&#xff0c;旨在指导和规范基于Modbus协议的工业自动化网络的设计和实施。该标准由全国工业过程测量控制和自动化标准化技术委员会&#xff08;TC124&#xff09;归口&#xff0c;并由中国机械工…...

[石榴翻译] 维吾尔语音识别 + TTS语音合成

API网址 丝路AI平台 获取 Access token 接口地址&#xff1a;https://open.xjguoyu.cn/api/auth/oauth/token&#xff0c;请求方式&#xff1a;GET&#xff0c;POST Access token是调用服务API的凭证&#xff0c;调用服务API之前需要获取 token。每次成功获取 token 以后只有…...

算法题(32):三数之和

审题&#xff1a; 需要我们找到满足以下三个条件的所有三元组&#xff0c;并存在二维数组中返回 1.三个元素相加为0 2.三个元素的下标不可相同 3.三元组的元素不可相同 思路&#xff1a; 混乱的数据不利于进行操作&#xff0c;所以我们先进行排序 我们可以采取枚举的方法进行解…...

webpack03

什么是source-map 将代码编译压缩之后&#xff0c;&#xff0c;可以通过source-map映射会原来的代码&#xff0c;&#xff0c;&#xff0c;在调试的时候可以准确找到原代码报错位置&#xff0c;&#xff0c;&#xff0c;进行修改 source-map有很多值&#xff1a; eval &#…...

组会 | SNN 的 BPTT(backpropagation through time)

目录 1 神经学基础知识1.1 神经元1.2 神经元之间的连接1.3 膜电位1.4 去极化与超极化 2 SNN2.1 LIF 模型2.2 BPTT 中存在的问题2.3 梯度爆炸或消失问题 前言&#xff1a; 本博仅为组会总结&#xff0c;如有谬误&#xff0c;请不吝指正&#xff01;虽然标题为 BPTT&am…...

CDA数据分析师一级经典错题知识点总结(3)

1、SEMMA 的基本思想是从样本数据开始&#xff0c;通过统计分析与可视化技术&#xff0c;发现并转换最有价值的预测变量&#xff0c;根据变量进行构建模型&#xff0c;并检验模型的可用性和准确性。【强调探索性】 2、CRISP-DM模型Cross Industry Standard Process of Data Mi…...

django基于Python的电影推荐系统

Django 基于 Python 的电影推荐系统 一、系统概述 Django 基于 Python 的电影推荐系统是一款利用 Django 框架开发的智能化应用程序&#xff0c;旨在为电影爱好者提供个性化的电影推荐服务。该系统通过收集和分析用户的观影历史、评分数据、电影的属性信息&#xff08;如类型…...

JVM与Java体系结构

一、前言: Java语言和JVM简介: Java是目前最为广泛的软件开发平台之一。 JVM:跨语言的平台 随着Java7的正式发布&#xff0c;Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。 Java虚拟机根本不关心运行在其内部的程序到底是使用何…...

网络授时笔记

SNTP的全称是Simple Network Time Protocol&#xff0c;意思是简单网络时间协议&#xff0c;用来从网络中获取当前的时间&#xff0c;也可以称为网络授时。项目中会使用LwIP SNTP模块从服务器(pool.ntp.org)获取时间 我们使用sntp例程&#xff0c;sntp例程路径为D:\Espressif\…...

【CSS】HTML页面定位CSS - position 属性 relative 、absolute、fixed 、sticky

目录 relative 相对定位 absolute 绝对定位 fixed 固定定位 sticky 粘性定位 position&#xff1a;relative 、absolute、fixed 、sticky &#xff08;四选一&#xff09; top&#xff1a;距离上面的像素 bottom&#xff1a;距离底部的像素 left&#xff1a;距离左边的像素…...

spark汇总

目录 描述运行模式1. Windows模式代码示例 2. Local模式3. Standalone模式 RDD描述特性RDD创建代码示例&#xff08;并行化创建&#xff09;代码示例&#xff08;读取外部数据&#xff09;代码示例&#xff08;读取目录下的所有文件&#xff09; 算子DAGSparkSQLSparkStreaming…...

【Rust自学】11.5. 在测试中使用Result<T, E>

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.5.1. 测试函数返回值为Result枚举 到目前为止&#xff0c;测试运行失败的原因都是因为触发了panic&#xff0c;但可以导致测试失败的…...

Sping Boot教程之五十四:Spring Boot Kafka 生产者示例

Spring Boot Kafka 生产者示例 Spring Boot 是 Java 编程语言中最流行和使用最多的框架之一。它是一个基于微服务的框架&#xff0c;使用 Spring Boot 制作生产就绪的应用程序只需很少的时间。Spring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序&#xff0c;您可…...

设计模式-结构型-组合模式

1. 什么是组合模式&#xff1f; 组合模式&#xff08;Composite Pattern&#xff09; 是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。换句话说&#xff0c;组合模式允…...

LoRa Feather固件设计:ESP32-S3多外设协同与低功耗调度

1. 项目概述“LoRa Feather”并非一个官方发布的标准化嵌入式库&#xff0c;而是由开发者基于 Adafruit LoRa FeatherWing&#xff08;如 RFM95W/RFM96W 模块&#xff09;与 ESP32-S3&#xff08;特别是带 TFT 显示屏的 Adafruit Feather ESP32-S3 Reverse&#xff09;硬件平台…...

集成Touchgal与快马平台,高效开发移动端富交互图片浏览组件

集成Touchgal与快马平台&#xff0c;高效开发移动端富交互图片浏览组件 最近在开发一个电商项目时&#xff0c;遇到了一个常见需求&#xff1a;商品详情页的图片浏览组件需要支持各种手势操作。传统的做法是从零开始编写手势识别逻辑&#xff0c;但这样不仅耗时&#xff0c;还…...

如何在个人电脑上搭建专属的图片搜索引擎:ImageSearch终极指南

如何在个人电脑上搭建专属的图片搜索引擎&#xff1a;ImageSearch终极指南 【免费下载链接】ImageSearch 基于.NET8的本地硬盘千万级图库以图搜图案例Demo和图片exif信息移除小工具分享 项目地址: https://gitcode.com/gh_mirrors/im/ImageSearch 你是否曾经因为找不到某…...

Autovisor:5分钟实现智慧树课程自动化学习的智能助手

Autovisor&#xff1a;5分钟实现智慧树课程自动化学习的智能助手 【免费下载链接】Autovisor 2024知道智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装发行版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor Autovisor是一款专为智慧树在线课程平…...

全球首届具身智能开发者大会深圳落幕,真机实战引领产业跃迁,重新定义具身智能新坐标

3月30日&#xff0c;由深圳市人工智能产业办公室指导&#xff0c;自变量机器人、深圳市人工智能行业协会与广东省具身智能训练场联合主办的全球首届具身智能开发者大会&#xff08;Embodied AI Developers Conference&#xff0c;简称EAIDC 2026&#xff09;暨「具亮计划」黑客…...

小模型大能力:DeepSeek-R1-Distill-Qwen-1.5B在边缘计算中的应用

小模型大能力&#xff1a;DeepSeek-R1-Distill-Qwen-1.5B在边缘计算中的应用 1. 引言&#xff1a;边缘计算时代的轻量级AI解决方案 在AI技术快速发展的今天&#xff0c;大模型已经展现出惊人的能力。然而&#xff0c;当我们把目光投向边缘计算场景时&#xff0c;传统的百亿参…...

ai辅助开发,让快马智能生成centos下openclaw安装与配置的疑难解决方案

在CentOS系统上安装和配置OpenClaw这类工具时&#xff0c;经常会遇到各种依赖冲突、环境配置问题&#xff0c;以及需要定制化爬取规则的情况。传统方式下&#xff0c;我们需要手动查阅文档、调试命令&#xff0c;甚至反复尝试不同版本的依赖包&#xff0c;过程相当耗时。而借助…...

终极指南:如何深度探索Alerter的10个隐藏高级功能

终极指南&#xff1a;如何深度探索Alerter的10个隐藏高级功能 【免费下载链接】Alerter Tapadoo/Alerter: 是一个简单易用的 Android 通知和进度条控件库。适合对 Android 开发、用户界面以及想要在 Android 应用中显示通知和进度条的开发者。 项目地址: https://gitcode.com…...

Fish 4.6发布,命令行工具迎来新升级

近日&#xff0c;基于 Rust 语言开发的现代化交互式 Shell Fish 4.6 正式发布。它以智能提示和友好体验著称&#xff0c;此次更新带来细节优化&#xff0c;支持 systemd 环境变量&#xff0c;提升与 Linux 系统集成度。深度集成 systemd2024 年起&#xff0c;systemd 引入三个用…...

DAMO-YOLO智能视觉系统作品集:多场景零售货架检测效果惊艳展示

DAMO-YOLO智能视觉系统作品集&#xff1a;多场景零售货架检测效果惊艳展示 1. 零售视觉检测的新标杆 走进现代零售空间&#xff0c;商品陈列的艺术背后隐藏着复杂的运营挑战。传统的人工巡检方式已经难以满足快节奏零售环境的需求&#xff0c;这正是DAMO-YOLO智能视觉系统大放…...