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

news2024/12/23 19:35:45

目录

  • 509. 斐波那契数
    • 1、题目描述
    • 2、思路
    • 3、code
    • 4、复杂度分析
  • 70. 爬楼梯
    • 1、题目描述
    • 2、思路
    • 3、code
  • 746. 使用最小花费爬楼梯
    • 1、题目描述
    • 2、思路
    • 3、code
    • 4、复杂度分析

509. 斐波那契数

题目链接:link

1、题目描述

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n ,请计算 F(n) 。

2、思路

1️⃣ 动态规划(数组)
2️⃣动态规划(两个数值

3、code

1️⃣动态规划(数组)

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

2️⃣动态规划(两个数值)

class Solution:
    def fib(self, n: int) -> int:
        if n == 0:
            return 0
        if n == 1:
            return 1
        a = 0
        b = 1
        for i in range(2,n+1):
            c = a + b
            a = b
            b = c
        return c

💥两个数值数值的更新需要思考
在这里插入图片描述

4、复杂度分析

1️⃣ 时间复杂度: O ( N ) O(N) O(N)
2️⃣ 空间复杂度: O ( N ) O(N) O(N)(数组) O ( 1 ) O(1) O(1)(两个值)

70. 爬楼梯

题目链接:link

1、题目描述

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶

2、思路

1️⃣ 爬1阶台阶需要一步
2️⃣ 爬2阶台阶可以一步再一步,也可以直接2步
3️⃣ 爬3阶台阶:爬到1阶台阶之后2步上来;爬到2阶台阶之后1步上来(🔥我的思维误区?为什么不能爬到1阶台阶之后也一步再一步上来,因为这样的话就和2阶台阶的重了)

3、code

和斐波那契数列一样

746. 使用最小花费爬楼梯

题目链接:link

1、题目描述

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
示例 1:
输入:cost = [10,15,20]
输出:15
解释:你将从下标为 1 的台阶开始。

  • 支付 15 ,向上爬两个台阶,到达楼梯顶部。
    总花费为 15 。

🔥 其实这个示例1是这样的:
在这里插入图片描述

2、思路

3、code

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        # 动态规划
        # step1:dp[i]含义:到达第i阶台阶需要的最小花费
        n = len(cost)
        if n == 0 or n == 1:
            return 0
        dp = [0] * (n+1)
        # step2:确定推导公式
        # dp[i] = min(dp[i-1] + cost[i-1],dp[i-2] + cost[i-2])
        # step3:确定初始条件(到达第0,1阶台阶是不需要花费的,因为最开始就是从0,1开始往上爬的)
        dp[0] = 0
        dp[1] = 0
        # step4;确定循环顺序:->
        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]

4、复杂度分析

1️⃣ 时间复杂度: O ( N ) O(N) O(N)
2️⃣ 空间复杂度: O ( N ) O(N) O(N)

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

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

相关文章

503错误

503 Service Temporarily Unavailable 我在学习ES-IK分词器时restart es后发现刷新网页报了503错误 后面发现是由于浏览器缓存或存储的Cookies引起的,需要清除缓存和Cookies 然后在游览器设置中找到 ​​ 然后刷新发现可以了

从初阶到顶尖:腾讯产品经理五级能力模型深度解读

产品经理在互联网企业中扮演着至关重要的角色,他们负责从需求分析到产品落地的整个生命周期。在腾讯的产品经理能力模型中,能力被分为五个等级(Level 1 到 Level 5),每个等级代表了产品经理在通用能力、专业知识、专业…

【Python报错已解决】“ModuleNotFoundError: No module named ‘mne‘”

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述1.1 报错示例:当我们尝试导入MNE-Python库时,可能会看到以下错误…

基础动销方案:开启稳健起步之路

在当今竞争激烈的商业世界中,如何让产品或服务实现有效动销,是企业生存与发展的关键所在。而基础动销方案,正是企业迈出稳健第一步的重要策略。 基础动销到底有多重要呢?它能在产品或服务推出初期,通过一系列营销手段达…

2025毕业季:如何用Java SpringBoot构建医疗就诊平台?掌握最新技术,开启医疗信息化大门

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

Windows 下载安装RabbitMQ

环境描述 windows10 Erlang 26.2.x 版本 RabbitMQ 3.13.7 因为RabbitMQ是Erlang语言开发的,所以必须安装 Erlang RabbitMQ官网链接: https://www.rabbitmq.com/docs/which-erlang 1.下载并安装Erlang 26.2.5 1.1下载Erlang 26.2.5 https://erlang.org/dow…

2.【R语言】RStudio的下载和安装

2.1 RStudio的介绍 RStudio 是一种集成开发环境 (Integrated Development Environment, IDE),主要用于 R 语言的开发和数据分析。它为 R 语言的使用者提供了一系列便捷的工具和功能,使得编写、调试和执行 R 代码变得更加高效和直观。以下是对 RStudio 主…

面向电商与营销的AI一键试衣:打造个性化购物体验

随着人工智能技术的迅猛发展,虚拟试衣功能正在逐渐改变消费者的在线购物体验。本文将介绍一项名为“Kolors”的项目,它利用先进的AI技术,为电商平台和营销活动提供了一键试衣功能。通过精确调整和优化服装在生成图像中的外观,Kolors使得虚拟试衣体验更加自然和逼真。 一、项…

nginx 部署前端vue项目

文章目录 一、什么是nginx?二、nginx 部署前端vue项目步骤2.1 安装nginx2.1.1 windows环境安装2.1.2 linux环境安装 2.2 打包vue项目 2.3 配置nginx 一、什么是nginx? Nginx是一款轻量级的HTTP服务器,采用事件驱动的异步非阻塞处理方式框架&…

JDK7前时间相关类(Data,SimpleDataFormat,Calender)

Data时间类 世界标准时间:格林尼治时间(GMT) 目前世界标准时间(UTC)已经替换为:原子钟 中国标准时间:世界标准时间8小时 总结: 1.如何创建日期对象? Data data new…

FreeRTOS线程数据传递---消息队列

简介 队列操作 创建队列 队列写入 队列写入 队列读取 队列相关函数 1.创建队列 2.向队列写入 3.从队列读取 队列的其他写入API函数 简介 在实际的项目开发中,经常会遇到在任务于任务之间或任务于中断之间需要进行“沟通交 流”,这…

2D 凸包-2D Convex Hulls

2D 凸包-2D Convex Hulls 本章描述了CGAL中用于生成二维凸包的函数,以及用于检查点集是否为强凸的函数。还有许多用于计算特殊极值点和包点子序列的函数,如一组点的下包和上包。 CGAL提供了几种经典算法的实现,用于计算二维点集的逆时针极值…

嵌入式软件--51单片机 DAY 1

一、单片机 1.单片机概念 51单片机(或称8051单片机)原是指1980年由Intel公司推出的一种8位微控制器系列,现在更多的指实现了8051指令集(单片机的“语言”)的一系列单片机。8位指的是寄存器的位数和数据总线的位数&…

分贝通助力云天励飞“甩掉”每月报销烦恼

技术创新和应用落地两手抓,已经是每一家人工智能企业突破瓶颈、快速发展的共同选择。可在组织的日常运营中,如何提升创新效率,保证项目建设又快又好完成,人效是关键。作为国内领先的人工智能企业,云天励飞率先选择从费用支出的角度寻找人效升级突破。 企业介绍 云天励飞成立于…

confluent-kafka

confluent-kafka pip3 install confluent-kafkaProducer.py from confluent_kafka import Producer# Kafka 配置 config {bootstrap.servers: 10.10.x.x:3082,security.protocol: SASL_PLAINTEXT,sasl.mechanism: SCRAM-SHA-512,sasl.username: kafka-974a3a34-bpxuser1,sas…

SAP物料帐结账操作

1. CKMLCP 实际物料帐运行 备注:执行最后一步过帐结帐时,MMPV允许记帐结帐期间和结帐的下一期间,同时OB52会计期间要允许记帐到这两个期间。 2. FAGLB03 查询材料成本差异余额 物料分类帐运行前总帐余额 物料分类帐运行后总帐余额 备注&…

模具配件加工精度的重要性及如何实现高精度加工?

在现代工业生产的舞台上,模具配件加工如同一位技艺精湛的工匠,以精度至上为准则,为各类模具赋予了优越的品质保障。时利和将详细阐述模具配件加工精度的重要性以及如何实现高精度加工! 一、精度:模具配件的灵魂 模具配件的精度是其…

语音测试(一)视频转音频

视频转音频 下载ffmpeg工具进入bin目录cmd进入控制台输入命令 ffmpeg.exe -i ./视频.mp4 ./音频.wav

92. UE5 GAS RPG 使用C++创建GE实现灼烧的负面效果

在正常游戏里,有些伤害技能会携带一些负面效果,比如火焰伤害的技能会携带燃烧效果,敌人在受到伤害后,会接受一个燃烧的效果,燃烧效果会在敌人身上持续一段时间,并且持续受到火焰灼烧。 我们将在这一篇文章里…

【最新华为OD机试E卷】猜字迷(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…