【Day28】LeetCode:509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

文章目录

  • [LeetCode:509. 斐波那契数](#LeetCode:509. 斐波那契数)
  • [LeetCode:70. 爬楼梯](#LeetCode:70. 爬楼梯)
  • [LeetCode:746. 使用最小花费爬楼梯](#LeetCode:746. 使用最小花费爬楼梯)

LeetCode:509. 斐波那契数

https://leetcode.cn/problems/fibonacci-number/

思路

状态转移方程 dp[i] = dp[i - 1] + dp[i - 2] .

解答

python 复制代码
class Solution:
    def fib(self, n: int) -> int:
        if n == 0:
            return 0
        elif n == 1:
            return 1

        dp0 = 0
        dp1 = 1
        
        for i in range(2, n + 1):
            temp_sum = dp0 + dp1
            dp0 = dp1
            dp1 = temp_sum
        
        return dp1

LeetCode:70. 爬楼梯

https://leetcode.cn/problems/climbing-stairs/

思路

爬 n 级楼梯的爬法,可以从 n -1 级跨 1 个台阶,也可以从 n - 2 级跨 2 个台阶。即 dp[i] = dp[i - 1] + dp[i - 2]

解答

python 复制代码
class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 1:
            return 1

        if n == 2:
            return 2
        
        dp1 = 1
        dp2 = 2

        for i in range(3, n + 1):
            temp_sum = dp1 + dp2
            dp1 = dp2
            dp2 = temp_sum
        
        return dp2

LeetCode:746. 使用最小花费爬楼梯

https://leetcode.cn/problems/min-cost-climbing-stairs/description/

思路

用 dp 数组记录到每个下标的最小耗费,要登顶则 i == n,刚好越界。则状态转移方程为:dp[i] = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2]) ,即要到 i 处考虑从 i - 1 处消耗 cost[i-1] 跳 1 级,或从 i - 2 处消耗 cost[i-2] 跳 2 级。

解答

python 复制代码
class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        n = len(cost)

        dp = [None] * (n + 1) # 记录到每个下标的最小耗费,要登顶则 i == n,刚好越界

        dp[0] = 0 # 直接从 cost[0] 或 cost[1] 出发,不消耗
        dp[1] = 0
        
        for i in range(2, n + 1):
            dp[i] = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2])

        return dp[n]
相关推荐
正经教主几秒前
【FDE系列】阶段2:Day 29:FastAPI 进阶 — Pydantic 模型与完整 CRUD 实战
人工智能·python·fde
gCode Teacher 格码致知4 分钟前
Pandas教学-6:coerce详解
python·pandas
梦在远山后9 分钟前
Electron 与 FastAPI 如何完成流式 Agent 对话
python·langchain·agent
大衛說19 分钟前
12 · 文件 I/O 与序列化
python
小静AI工程实验室33 分钟前
Python 爬虫中文乱码排查:严格解码、UTF-8 BOM 与 JSON 转义的 12 项实验
字符编码·爬虫·python
天天被压力40 分钟前
【跨市场数据实战 #08】可转债折价机会怎么筛:3个接口抓比价、列表和实时盘口
java·人工智能·python
Selvaggia1 小时前
Diffusion Model 的基本原理与模型架构
算法
weixin199701080161 小时前
[特殊字符]️《从0到1搭多平台二手ERP中台:闲鱼+淘宝+京东+拼多多+Mercari统一调度》(附Python源码)
python
王国强20091 小时前
uv 深入指南:重新理解 Python 的包管理、依赖解析与项目工程化
python
巡山小钻风来也1 小时前
【保姆级教程】自定义数据集微调PP-OCRv6文本检测模型
python·ocr·paddlepaddle