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

news2024/11/24 17:27:40

509. 斐波那契数

题目

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

动态规划

class Solution {
    public int fib(int n) {
        // 题目条件n > 1
        if(n <= 1) return n;
        int[] dp = new int[n + 1];
        // dp数组初始化
        dp[0] = 0;
        dp[1] = 1;
        for(int i = 2; i <= n; i++){
            // 递推公式
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
}

方法

class Solution {
    public int fib(int n) {
        if(n < 2) return n;
        int a = 0, b = 1, c = 0;
        for(int i = 2; i <= n; i++){
            c = a + b;
            a = b;
            b = c;
        }
        return b;
    }
}

递归

class Solution {
    public int fib(int n) {
        // 题目条件n > 1
        if(n <= 1) return n;
        return fib(n - 1) + fib(n - 2);
    }
}

70. 爬楼梯

题目

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
在这里插入图片描述

动态规划

class Solution {
    public int climbStairs(int n) {
        if(n <= 0) return n;
        int[] dp = new int[n + 1];
        // dp数组初始化
        dp[0] = 1;
        dp[1] = 1;
        for(int i = 2; i <= n; i++){
            // 递推公式
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
}

方法

class Solution {
    public int climbStairs(int n) {
        if(n <= 2) return n;
        int a = 1, b = 2, c = 0;
        for(int i = 3; i <= n; i++){
            c = a + b;
            a = b;
            b = c;
        }
        return b;
    }
}

746. 使用最小花费爬楼梯

题目

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
在这里插入图片描述

动态规划(站在楼梯上不支付费用)

class Solution {
    // 思路:每走一步计算花费的最小值
    public int minCostClimbingStairs(int[] cost) {
        int[] dp = new int[cost.length + 1];
        // dp初始化
        /**
            可以从0或1的台阶开始爬楼梯
            站在台阶上并不需要花费
            只有要爬楼梯时才需要花费下标对应的值
         */
        dp[0] = 0;
        dp[1] = 0;
        // 遍历顺序
        for(int i = 2; i <= cost.length; i++){
            // 递推公式
            // 爬楼梯的位置+对应花费的值,取最小花费
            dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
        }
        return dp[cost.length];
    }
}

动态规划(站在楼梯上并支付费用)

class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int[] dp = new int[cost.length];
        // dp初始化
        // 站在台阶上,并且支付了对应的费用
        dp[0] = cost[0];
        dp[1] = cost[1];
        for(int i = 2; i < cost.length; i++){
            // 递推公式
            // 已经在原本的台阶上支付了费用,所以只需要支付下一个台阶的费用即可
            dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];
        }
        // 计算最后一步,在倒数一个台阶和倒数两个台阶中取最小费用
        return Math.min(dp[cost.length - 1], dp[cost.length - 2]);
    }
}

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

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

相关文章

无底线内卷?谈谈如何在职场中实现人生巅峰

在竞争激烈的职场上&#xff0c;各种职场难题时常出现&#xff0c;如何进行有效沟通、如何应对工作压力、如何提升职业能力等&#xff0c;这都是需要去克服的问题。 1. 尝试人际沟通A&#xff1a;TO 企业B&#xff1a;TO 员工 2. 适应工作压力A&#xff1a;原因B&#xff1a;TO…

ROS2 入门应用 创建启动文件(C++)

ROS2 入门应用 创建启动文件&#xff08;C&#xff09; 1. 创建功能包2. 添加依赖关系3. 添加编译信息4. 创建启动文件4.1. Python4.2. XML4.3. YAML 5. 编译和运行 1. 创建功能包 用Python、XML或YAML编写的启动文件可以启动和停止不同的节点&#xff0c;以及触发和处理各种事…

法规标准-GB/T 39323标准解读(2020版)

GB/T 39323是做什么的&#xff1f; GB/T 39323全称为乘用车车道保持辅助(LKA)系统性能要求及试验方法&#xff0c;其中主要描述了LKA系统的功能要求及测试要求 一般要求 1.系统应能在状态良好的车道边线环境下识别车辆与车道边线的相对位置&#xff0c;辅助驾驶员将车辆保持…

76.建立一个主体样式第二部分

上节课的时候我们完成的页面是这个样子&#xff01; ● 之后我们通过绝对定位来解决位置定位的问题 .header-container {width: 1200px;margin: 0 auto;position: absolute;left: 50%;top: 50%; }header {height: 100vh;background-color: orange;position: relative; }● 之…

通过Python的PyPDF2库提取pdf中的文字

文章目录 前言一、PyPDF2库是什么&#xff1f;二、安装PyPDF2库三、查看PyPDF2库版本四、使用方法1.引入库2.定义pdf路径3.打开PDF文件4.创建PDF阅读器对象5.获取PDF文件中的页数6.遍历每一页7.获取当前页内容8.提取当前页文本9.打印当前页文本10.效果 总结 前言 一、PyPDF2库…

【2023 · CANN训练营第一季】初识新一代开发者套件 Atlas 200I DK A2---介绍Atlas 200I DK A2的基本使用

1.Atlas 200I DK A2开发者套件板介绍 应用场景&#xff1a;昇腾AI开发者上手学习、实践创新场景&#xff0c;提供配套软硬件 关键特性规格描述形态135mm120mm44mmAI 算力整数精度&#xff08;INT8):8 TOPS 半精度&#xff08;FP16): 4 TFLOPS摄像头接口2* MIPI - CSI 支持两个…

研报精选230521

目录 【行业230521山西证券】煤炭行业周报&#xff1a;量减需增进口倒挂&#xff0c;煤炭价格企稳反弹 【行业230521东吴证券】大炼化周报&#xff1a;油价弱势震荡&#xff0c;下游表现疲软 【行业230521东海证券】4月社零报告专题&#xff1a;低基数下创新高&#xff0c;实质…

MyBatisX

文章目录 MyBatisXMybatis带参方法 动态条件查询多条件查询多条件-动态条件查询ifchoose(when,otherwise) 添加添加-主键返回 修改修改全部字段修改动态字段 删除MyBatis参数传递多个参数单个参数 MyBatis注解完成增删改查 MyBatisX pojo类中的属性名要和数据库中的一致才能实现…

ARM学习笔记_2 模式,寄存器,流水线

ARM arm体积小功耗低性能高&#xff0c;支持thumb ARM双指令集&#xff0c;兼容8/16位器件&#xff1b;大量使用寄存器&#xff0c;指令定长&#xff0c;寻址简单。 ARM是32位架构&#xff0c;Word 32bit&#xff0c; half Word 16bit. 模式 用户模式是用户程序的模式&#…

RK3568平台开发系列讲解(驱动基础篇)RK平台IR的使用

🚀返回专栏总目录 文章目录 一、红外遥控配置二、内核驱动2.1 DTS 定义键值表2.2 内核用户码和IR键值的获取2.3 编译 IR 驱动进内核2.4 Android 键值映射三、IR 波形沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对RK IR的使用进行学习。 一、红外遥控配置 …

解决插件加载动态库的冲突问题

最近发给用户的插件在使用过程中&#xff0c;UI界面一直未能加载成功&#xff0c;分析后发现和其他的插件发生冲突了&#xff0c;同时用到了一个UI库&#xff1a;MahApps.Metro&#xff08;自己改造过的版本&#xff09;。 分析过程中使用ProcessExplorer查看Revit运行过程中所…

二叉树最大宽度-广度优先方式 -队列应用_20230520

二叉树最大宽度-广度优先(BFS)方式 -队列应用 前言 上一遍介绍了求解二叉树最大宽度的DFS解法&#xff0c;求解的核心主要是对根节点、左孩子及右孩子的宽度取最大值&#xff0c;通过赋值给根节点后&#xff0c;然后通过递归栈层层返回&#xff0c;当返回至树的根节点上的时候…

数字图像处理—图像分割算法详解(边缘检测、阈值处理)

前言 令R表示一幅图像占据的整个空间区域。图像分割&#xff1a;把R分为n个子区域R1,R2,…,Rn的过程&#xff0c;满足 点、线、边缘检测 背景知识 一阶导数的近似要求&#xff1a; &#xff08;1&#xff09;在恒定灰度区域必须为零 &#xff08;2&#xff09;在灰度台阶或…

【连续介质力学】张量值张量函数

张量值张量函数 张量值张量函数有以下类型&#xff1a;标量&#xff0c;向量和高阶张量 标量值张量函数&#xff1a; Ψ Ψ ( T ) det ⁡ T Ψ Ψ ( T , S ) T : S \Psi \Psi(T) \det T \\ \Psi \Psi(T,S) T:S ΨΨ(T)detTΨΨ(T,S)T:S 其中&#xff0c; T , S T, S …

【JavaEE】MyBatis + 单元测试

目录 MyBaits项目的创建使用 引入相关依赖 配置文件设置 数据库连接 配置XML路径 映射器文件模板 业务代码实例 创建实体类 添加Mapper接口创建映射器 验证是否成功 MyBatis原理 什么是MyBatis 为什么学习MyBatis MyBatis工作原理 单元测试 前置工作 生成测试…

Selenium是什么,带你了解自动化测试的神奇之处

一、使用测试工具 工欲善其事&#xff0c;必先利其器。在开始具体的自动化测试之前&#xff0c;我们需要做好更多的准备&#xff0c;包括以下几个方面&#xff1a; 认识自动化测试 准备自动化测试工具 使用有效的方式 针对具体的测试对象 接下来的第一部分内容&#xff0c;我…

基于Java web的电子商务系统

摘要 【摘要】 所谓电子商务就是在网上开展商务活动&#xff0c;当企业将它的主要业务通过企业内部网&#xff08;Intranet&#xff09;、外部网&#xff08;Extranet&#xff09;以及Internet与企业的职员、客户供销商以及合作伙伴直接相连时&#xff0c;其中发生的各种活动就…

基于SpringBoot的校园志愿者管理系统的设计与实现

背景 本次设计任务是要设计一个校园志愿者管理系统&#xff0c;通过这个系统能够满足管理员和志愿者的校园志愿者信息管理功能。系统的主要功能包括首页、个人中心、志愿者管理、活动类型管理、活动信息管理、活动报名管理、活动通知管理、活动心得管理、交流反馈、系统管理等…

【LTspice入门】一、LTspice安装

一、LTspice安装 1、仿真的重要性&#xff1a;2、LTspice介绍3、LTspice官网4、LTspice下载与安装 1、仿真的重要性&#xff1a; 掌握好电路仿真有助于加深对电子电路分析理论的理解。 由于电子电路仿真不需要实际的元件和仪器仪表设备,设计者就可以对所涉及的电子电路进行性能…

PCIE总线基本介绍(和PCI总线差异、速率计算、引脚定义)

1、PCI和PCIE的差异 (1)PCIE协议在软件编程上是兼容PCI协议&#xff0c;不同在于PCIE和PCI的控制器&#xff1b; (2)PCIE是差分串行信号线&#xff0c;PCI是电平并行信号线&#xff1b; (3)PCI协议使用INTA#、INTB#、INTC#、INTD#四根中断线来触发终端&#xff0c;PCIE协议没有…