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

devtools/2024/10/24 19:38:51/

509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

    • 509. 斐波那契数
    • 70. 爬楼梯
    • 746. 使用最小花费爬楼梯

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

python">#递归
class Solution:def fib(self, n: int) -> int:if n == 0:return 0if n == 1:return 1return self.fib(n-1)+self.fib(n-2)
#动态规划        
class Solution:def fib(self, n: int) -> int:if n == 0:return 0if n == 1:return 1res = [0,1]for i in range(2,n+1):res.append(res[-1]+res[-2])return res[n]

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 阶
python">class Solution:def climbStairs(self, n: int) -> int:dp = [0]*(n+1)dp[0] = 1dp[1] = 1for i in range(2,n+1):dp[i] = dp[i-1]+dp[i-2]return dp[n]class Solution:def climbStairs(self, n: int) -> int:if n<=1:return 1dp_0 = 1dp_1 = 1for i in range(2,n+1):dp_1,dp_0 = dp_0+dp_1,dp_1return dp_1   

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 。
python">class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:dp = [0]*(len(cost)+1)dp[0] = 0dp[1] = 0for i in range(2,len(cost)+1):dp[i] = min((dp[i-1]+cost[i-1]),(dp[i-2]+cost[i-2]))return dp[len(cost)]class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:dp_0 = 0dp_1 = 0for i in range(2,len(cost)+1):dp_1,dp_0 = min(dp_0+cost[i-2],dp_1+cost[i-1]),dp_1return dp_1   

都是斐波那契数的变形,简单题目,先对dp有一个认知。


http://www.ppmy.cn/devtools/128502.html

相关文章

智慧楼宇平台,构筑未来智慧城市的基石

随着城市化进程的加速&#xff0c;城市面临着前所未有的挑战。人口密度的增加、资源的紧张、环境的恶化以及对高效能源管理的需求&#xff0c;都在推动着我们寻找更加智能、可持续的城市解决方案。智慧楼宇作为智慧城市建设的重要组成部分&#xff0c;正逐渐成为推动城市可持续…

「AIGC」AI设计工具 v0.dev

https://v0.dev/ 1.1 简介 $20 学习前端代码本身似乎并不复杂,但是有平台能够直接生成代码、预览效果,似乎更有性价比。可能对于有前端和开发经验的同学而言,直接实现某个页面效果并不算是太复杂的事情,但是对于没有代码经验的同学而言,直接使用 AI 跑出代码甚至直接落地…

Chainlit集成LlamaIndex和Chromadb实现RAG增强生成对话AI应用

前言 本文主要讲解如何使用LlamaIndex和Chromadb向量数据库实现RAG应用&#xff0c;并使用Chainlit快速搭建一个前端对话网页&#xff0c;实现RAG聊天问答增强的应用。文章中还讲解了LlamaIndex 的CallbackManager回调&#xff0c;实现案例是使用TokenCountingHandler&#xf…

云渲染分布式渲染什么意思?一文详解

渲染和分布式渲染是现代计算机图形学中的重要技术&#xff0c;它们通过将渲染任务分散到多个服务器或计算节点上&#xff0c;显著提高了渲染效率和处理大规模数据的能力。这项技术在动画制作、游戏开发和电影特效等领域发挥着关键作用&#xff0c;为创作者提供了更快速、更灵活…

SolarWinds Web Help Desk曝出严重漏洞,已遭攻击者利用

近日&#xff0c;CISA 在其 “已知漏洞”&#xff08;KEV&#xff09;目录中增加了三个漏洞&#xff0c;其中一个是 SolarWinds Web Help Desk (WHD) 中的关键硬编码凭据漏洞&#xff0c;供应商已于 2024 年 8 月底修复了该漏洞。 SolarWinds Web Help Desk 是一款 IT 服务台套…

React前端框架高级技巧

在当今快速发展的前端开发世界中,React依然保持着强大的生命力和广泛的应用。无论你是React新手还是经验丰富的开发者,掌握一些高级技巧都能极大地提升你的开发效率。本文将为你揭示5个鲜为人知但非常实用的React技巧,让你的代码更加简洁、高效、易维护。 1. 使用React.memo()…

差分题目总和

二维差分 二维差分应用题目&#xff1a;矩形区域加值 题目描述 给定一个大小为 n n n \times n nn 的二维矩阵&#xff0c;初始时矩阵中的所有元素都为 0。你需要进行 m m m 次操作&#xff0c;每次操作向某一个矩形区域内的所有元素加上一个固定的值。请你在所有操作完成…

Jupyter notebook和Conda使用

Jupyter notebook和Conda使用 文章目录 Jupyter notebook和Conda使用AnacondaJupyter notebook简介页面使用技巧编写格式自动补全查看函数文档魔术命令远程访问交互式常用快捷键 Markdown数学公式LaTeX Anaconda Anaconda是一个开源的Python发行版本&#xff0c;其包含了conda…