代码随想录算法训练营第三十八天| LeetCode509.斐波那契数、LeetCode70.爬楼梯、LeetCode746.使用最小花费爬楼梯

LeetCode 509 斐波那契数

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

【解题思路】

  • 1.确定dp数组以及下标的含义

    • dp[i]的定义为:第i个数的斐波那契数值是dp[i]

  • 2.确定递推公式

    • 递推公式就是题目说的斐波那契值递推公式

  • 3.确定dp数组如何初始化

    • 题目也已经告诉我们了dp[0]和dp[1]的值

  • 4.确定遍历顺序

    • 因为我们需要按照递推公式:由前两个值推导第三个值,所以只能从前往后遍历

  • 5.举例推导dp数组

    • 按照题目要求手动推一遍斐波那契数值,再将我们代码输出的dp数组打印出来对照纠错。

【解题步骤】

  • 1.如果n<=1,直接return n

  • 2.创建一个int数组dp,长度为n+1用来存放斐波那契数

  • 3.按照题目给的数值,初始化dp[0]和dp[1]

  • 4.从i=2开始逐步往后推,直到i<=n:

    • 按照递推公式给当前位置的dp数组赋值

  • 5.返回dp数组第n个位置元素

【代码部分】

class Solution {public int fib(int n) {if (n <= 1) return n;             int[] dp = new int[n + 1];dp[0] = 0;dp[1] = 1;for (int index = 2; index <= n; index++){dp[index] = dp[index - 1] + dp[index - 2];}return dp[n];}
}

LeetCode 70 爬楼梯

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

【解题思路】

  • 1.确定dp数组以及下标的含义

    • dp[i]的定义是:爬到第i层楼梯,由dp[i]种方法

  • 2.确定递推公式

    • 因为题目说了只能一次走一步或者走两步,因此当前楼梯就有“前两层楼梯的方法之和”种方法前进,也就是:

      • dp[i] = dp[i-1]+dp[i-2](斐波那契数)

  • 3.确定dp数组如何初始化

    • 因为dp[0]无论是等于0还是等于1都能说通,为了避免争议,我们初始化dp[1]=1,dp[2]=2

  • 4.确定遍历顺序

    • 因为我们必须根据前两层的前进方法推出当前层的前进方法,所以只能从前向后遍历

  • 5.举例推导dp数组

    • 按照题目要求手动推一遍结果,再将我们代码输出的dp数组打印出来对照纠错。

【解题步骤】

  • 1.如果n<= 2,直接return n

  • 2.创建一个int数组dp,长度为n+1用来存放斐波那契数

  • 3.按照题目给的数值,初始化dp[1]=1,dp[2]=2

  • 4.从i=3开始逐步往后推,直到i<=n:

    • 按照递推公式给当前位置的dp数组赋值

  • 5.返回dp数组第n个位置元素

【代码部分】

public int climbStairs(int n) {int[] dp = new int[n + 1];dp[0] = 1;dp[1] = 1;for (int i = 2; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];
}

LeetCode 746 使用最小花费爬楼梯

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

【解题思路】

  • 1.确定dp数组以及下标的含义

    • dp[i]的定义为:到达第i层所花费的最少体力为dp[i]

  • 2.确定递推公式

    • dp[i] = min(dp[i1]+cost[i-1]+dp[i-2]+cost[i-2])

  • 3.确定dp数组如何初始化

    • dp[0]=0,dp[1]=1

  • 4.确定遍历顺序

    • 因为我们需要按照递推公式:由前两个值推导第三个值,所以只能从前往后遍历

  • 5.举例推导dp数组

    • 手动推导一下答案,然后将数组打印出来,对照着看看是否出错,在哪里出的错

【解题步骤】

  • 1.定义一个len变量,记录传入的cost数组长度

  • 2.定义一个dp数组,长度为len+1,记录我们的台阶层数

  • 3.初始化dp[0]=0;dp[1] = 1

  • 4.从i=2开始遍历整个cost数组长度:

    • 当前层的花费为前两层的前进方法加上花费的最小值

  • 5.返回dp数组最后位置的元素(跳到楼顶所花费的最少体力)

【代码部分】

class Solution {public int minCostClimbingStairs(int[] cost) {int len = cost.length;int[] dp = new int[len + 1];// 从下标为 0 或下标为 1 的台阶开始,因此支付费用为0dp[0] = 0;dp[1] = 0;// 计算到达每一层台阶的最小费用for (int i = 2; i <= len; i++) {dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);}return dp[len];}
}

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

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

相关文章

【Java GUI】人机对弈五子棋

在学校的Java课程中&#xff0c;我们被分配了一项有趣的任务&#xff1a;开发一款能够实现人机对弈的五子棋游戏。为了更好地理解Java GUI的运用&#xff0c;并与大家分享学习心得&#xff0c;我将整个开发过程记录在这篇博客中。欢迎大家阅读并提供宝贵的意见和建议&#xff0…

微信小程序-------模板与配置

能够使用 WXML 模板语法渲染页面结构能够使用 WXSS 样式美化页面结构能够使用 app.json 对小程序进行全局性配置能够使用 page.json 对小程序页面进行个性化配置能够知道如何发起网络数据请求 一.WXML 模板语法 数据绑定 1. 数据绑定的基本原则 ① 在 data 中定义数据 ② 在…

文件分享新风尚,二维码生成器全功能解析

随着科技的飞速发展&#xff0c;二维码生成器已经成为我们日常生活中不可或缺的一部分。无论是支付、下载应用还是获取信息&#xff0c;二维码都以其便捷性和高效性赢得了广大用户的青睐。在这样的背景下&#xff0c;二维码生成器应运而生&#xff0c;不仅支持多文件生成二维码…

Android Studio修改“choose boot runtime for the IDE“后无法打开

在Android Studio中选择了"choose boot runtime for the IDE"的New后&#xff0c;会自动重启AS&#xff0c;然后就无法打开android studio了&#xff0c;打开直接报错&#xff0c;cause by如下 Unable to make field protected java.lang.Runnable java.awt.event.In…

[leetcode] 58. 最后一个单词的长度

文章目录 题目描述解题方法倒序遍历java代码复杂度分析 题目描述 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a…

未来已来:解锁AGI的无限潜能与挑战

未来已来&#xff1a;解锁AGI的无限潜能与挑战 引言 假设你有一天醒来&#xff0c;发现你的智能手机不仅提醒你今天的日程&#xff0c;还把你昨晚做的那个奇怪的梦解释了一番&#xff0c;并建议你可能需要减少咖啡摄入量——这不是科幻电影的情节&#xff0c;而是人工通用智能…

maldev tricks在注册表中存储 payload

简介 注册表是 Windows 操作系统中一个重要的数据库&#xff0c;它包含 Windows 操作系统和应用程序的重要设置和选项。由于注册表的功能非常强大&#xff0c;因此注册表对于恶意程序来说是非常有利用价值的。 在 windows 注册表中存储二进制数据&#xff0c;这是一种常见的技…

每天一个数据分析题(二百九十六)

订单详情表是以每一笔订单的每一件商品为最小业务记录单位进行记录的&#xff0c;那么可能成为订单详情表的主键字段的是&#xff1f; A. 订单编号 B. 产品编号 C. 订单ID D. 订单编号产品编号 题目来源于CDA模拟题库 点击此处获取答案 cda数据分析考试&#xff1a;点击…

十七、Java网络编程(一)

1、Java网络编程的基本概念 1)网络编程的概念 Java作为一种与平台无关的语言,从一出现就与网络有关及其密切的关系,因为Java写的程序可以在网络上直接运行,使用Java,只需编写简单的代码就能实现强大的网络功能。下面将介绍几个与Java网络编程有关的概念。 2)TCP/IP协议概…

MVP+敏捷开发

MVP敏捷开发 1. 什么是敏捷开发&#xff1f; 敏捷开发是一种软件开发方法论&#xff0c;旨在通过迭代、自组织的团队和持续反馈&#xff0c;快速响应需求变化并交付高质量的软件。相较于传统的瀑布模型&#xff0c;敏捷开发强调灵活性、适应性和与客户的紧密合作。敏捷开发方…

qml和c++结合使用

目录 文章简介1. 创建qml工程2. 创建一个类和qml文件&#xff0c;修改main函数3. 函数说明&#xff1a;4. qml 文件间的调用5. 界面布局6. 代码举例 文章简介 初学qml用来记录qml的学习过程&#xff0c;方便后面归纳总结整理。 1. 创建qml工程 如下图&#xff0c;我使用的是…

【北京迅为】《iTOP龙芯2K1000开发指南》-第四部分 ubuntu开发环境搭建

龙芯2K1000处理器集成2个64位GS264处理器核&#xff0c;主频1GHz&#xff0c;以及各种系统IO接口&#xff0c;集高性能与高配置于一身。支持4G模块、GPS模块、千兆以太网、16GB固态硬盘、双路UART、四路USB、WIFI蓝牙二合一模块、MiniPCIE等接口、双路CAN总线、RS485总线&#…

光伏无人机:巡检无人机解决巡检难题

随着科技的飞速发展&#xff0c;无人机技术已经广泛应用于各个领域&#xff0c;其中光伏无人机在解决光伏电站巡检难题方面发挥了重要作用。光伏无人机以其高效、精准、安全的特点&#xff0c;为光伏电站的巡检工作带来了革命性的变革。 光伏电站通常位于广阔的户外场地&#x…

webpack热更新原理详解

文章目录 前言基础配置创建项目HMR配置 HMR交互概览HMR流程概述HMR实现细节初始化注册监听编译完成事件启动服务监听文件代码变化服务端发送消息客户端收到消息热更新文件请求热更新代码替换 问题思考 前言 刷新分为两种&#xff1a;一种是页面刷新&#xff0c;不保留页面状态…

二叉树的三种遍历方式非递归

## 二叉树的遍历需要把当前根节点和左右子树抽象成只有一个根节点和一个左子树&#xff0c;一个右子树的情况 ##套路 二叉树的遍历先序中序后序无非是根节点的处理顺序不同&#xff0c;三种遍历方式都有一个相同的逻辑流程&#xff0c;不管怎么样首先将左子树入栈&#xff0c;遍…

Uniapp 跨页面传复杂参、传对象

1、需要传递参数的页面 attended(e) {this.id e.baseIdlet obj {page: this.page,size: this.pageSize,baseId: e.baseId,str: this.struni.navigateTo({url: /pages/index/index?item encodeURIComponent(JSON.stringify(obj))})}}, encodeURIComponent 2、接收参数的页…

GPU深度学习环境搭建:Win10+CUDA 11.7+Pytorch1.13.1+Anaconda3+python3.10.9

1. 查看显卡驱动及对应cuda版本关系 1.1 显卡驱动和cuda版本信息查看方法 在命令行中输入【nvidia-smi】可以当前显卡驱动版本和cuda版本。 根据显示,显卡驱动版本为:Driver Version: 516.59,CUDA 的版本为:CUDA Version 11.7。 此处我们可以根据下面的表1 显卡驱动和c…

大模型咨询培训老师叶梓:利用知识图谱和Llama-Index增强大模型应用

大模型&#xff08;LLMs&#xff09;在自然语言处理领域取得了显著成就&#xff0c;但它们有时会产生不准确或不一致的信息&#xff0c;这种现象被称为“幻觉”。为了提高LLMs的准确性和可靠性&#xff0c;可以借助外部知识源&#xff0c;如知识图谱。那么我们如何通过Llama-In…

将阿里云中数据传输到其他超算服务器

目录 方法一&#xff1a;在阿里云中连接超算&#xff0c;然后使用rsync&#xff08;速度慢&#xff09; 方法2&#xff1a;rclone(速度很快&#xff0c;100G只花了大约20min) 方法一&#xff1a;在阿里云中连接超算&#xff0c;然后使用rsync/scp&#xff08;速度慢&#xff0…

网贷大数据黑名单要多久才能变正常?

网贷大数据黑名单是指个人在网贷平台申请贷款时&#xff0c;因为信用记录较差而被列入黑名单&#xff0c;无法获得贷款或者贷款额度受到限制的情况。网贷大数据黑名单的具体时间因个人信用状况、所属平台政策以及银行审核标准不同而异&#xff0c;一般来说&#xff0c;需要一定…