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

server/2025/3/4 4:09:46/

动态规划

动态规划中每一个状态一定是由上一个状态推导出来的
动态规划五步曲:

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

做动规的题目,写代码之前一定要把状态转移在dp数组的上具体情况在纸上模拟一遍

509. 斐波那契数

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

代码

class Solution:def fib(self, n: int) -> int:if n == 0:return 0dp = [0]*(n+1)dp[1] = 1for i in range(2,n+1):dp[i] = dp[i-1]+dp[i-2]return dp[n]

70. 爬楼梯

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

思路

  1. dp[i]的含义是爬到i层台阶的方法数

代码

class Solution:def climbStairs(self, n: int) -> int:if n == 1:return 1dp = [0]*(n+1)dp[1] = 1dp[2] = 2for i in range(3,n+1):dp[i] = dp[i-1]+dp[i-2]return dp[n]

746. 使用最小花费爬楼梯

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

思路

  1. dp[i]的含义是爬到i层台阶的最低花费

代码

class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:cost.append(0)dp = [0]*len(cost)dp[0] = cost[0]dp[1] = cost[1]for i in range(2,len(cost)):dp[i] = min(dp[i-1],dp[i-2])+cost[i]return dp[-1]

优化时间复杂度

class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:cost.append(0)dp0 = cost[0]dp1 = cost[1]for i in range(2,len(cost)):dp = min(dp0,dp1)+cost[i]dp0 = dp1dp1 = dpreturn dp1

http://www.ppmy.cn/server/172244.html

相关文章

自然语言处理:稀疏向量表示

介绍 大家好,我是博主。今天又来和大家分享自然语言处理领域的知识了。原本我计划这次分享NLP中文本表示的相关内容,不过在整理分享计划的过程中,发现这部分知识里包含一些涉及复杂数学原理和抽象概念的内容。对于刚接触NLP的小伙伴们来说&a…

Linux :进程状态

目录 1 引言 2 操作系统的资源分配 3进程状态 3.1运行状态 3.2 阻塞状态 3.3挂起状态 4.进程状态详解 4.1 运行状态R 4.2 休眠状态S 4.3深度睡眠状态D 4.4僵尸状态Z 5 孤儿进程 6 进程优先级 其他概念 1 引言 🌻在前面的文章中,我们已…

决策树 vs 神经网络:何时使用?

目录 1. 决策树(Decision Trees)1.1 特点1.2 优点1.3 缺点1.4 适用场景 2. 神经网络(Neural Networks)2.1 特点2.2 优点2.3 缺点2.4 适用场景 3. 何时选择哪种方法?4. 结合使用的可能性5.总结 在机器学习领域&#xff…

变电站蓄电池在线监测系统(论文+源码)

1系统方案设计 本次课题为变电站蓄电池在线监测系统的设计,其系统架构如图3.1所示,包括了主控制器STC89C52单片机,液晶显示器LCD1602,模数转换器ADC0832,电流传感器ACS712,分压电阻,蜂鸣器以及温度传感器。…

基于决策树和随机森林的鸢尾花种类预测

sklearn中与决策树分类有关的函数是DecisionTreeClassifier函数,本次实验主要使用DecisionTreeClassifier,集成学习由RandomForestRegressor函数指定若干棵决策树。使用这两种函数默认参数。 指定决策树算法。使用criterion"entropy"(信息熵)、…

蓝桥杯 灯笼大乱斗【算法赛】

问题描述 元宵佳节&#xff0c;一场别开生面的灯笼大赛热闹非凡。NN 位技艺精湛的灯笼师依次落座&#xff0c;每位师傅都有相应的资历值&#xff0c;其中第 ii 位师傅的资历值为 AiAi​。从左到右&#xff0c;师傅们的资历值逐级递增&#xff08;即 A1<A2<⋯<ANA1​&l…

谈谈 Node.js 中的模块系统,CommonJS 和 ES Modules 的区别是什么?

Node.js 模块系统&#xff1a;CommonJS 和 ES Modules 核心差异与实战指南 一、模块系统基础概念 **CommonJS (CJS)**​ 是 Node.js 传统模块系统&#xff0c;采用同步加载方式&#xff0c;典型特征&#xff1a; // 导出 module.exports { name: cjs }; // 或 exports.nam…

内网渗透测试-Vulnerable Docker靶场

靶场来源&#xff1a; Vulnerable Docker: 1 ~ VulnHub 描述&#xff1a;Down By The Docker 有没有想过在容器中玩 docker 错误配置、权限提升等&#xff1f; 下载此 VM&#xff0c;拿出您的渗透测试帽并开始使用 我们有 2 种模式&#xff1a; - HARD&#xff1a;这需要您将 d…