当前位置: 首页 > news >正文

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

509. 斐波那契数

题目链接:509. 斐波那契数

文档讲解:代码随想录/斐波那契数

视频讲解:视频讲解-斐波那契数

状态:已完成(1遍)

解题过程 

看到题目的第一想法

虽然看了卡哥的动态规划五部曲,但是看到题目之后还是不太会操作索性不要有自己多余的思考了,直接看视频讲解。

看完代码随想录之后的想法 

用动态规划五部曲:

  1. 确定dp数组以及下标的含义:dp[i]的定义为:第i个数的斐波那契数值是dp[i]
  2. 确定递推公式dp[i] = dp[i - 1] + dp[i - 2];
  3. dp数组如何初始化:dp[0] = 0 、dp[1] = 1;
  4. 确定遍历顺序:从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的;
  5. 举例推导dp数组

    按照这个递推公式dp[i] = dp[i - 1] + dp[i - 2],我们来推导一下,当N为10的时候,dp数组应该是如下的数列:0 1 1 2 3 5 8 13 21 34 55。

看了讲解手搓代码如下:

/*** @param {number} n* @return {number}*/
var fib = function(n) {let dp = [];dp[0] = 0,dp[1] = 1;for(let i = 2;i<=n;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];
};

总结

这道题作为动态规划之所以简单,是因为递推公式、初始化、遍历顺序都已经由题目确定。


 70. 爬楼梯 

题目链接:70. 爬楼梯

文档讲解:代码随想录/爬楼梯 

视频讲解:视频讲解-爬楼梯 

状态:已完成(1遍)

解题过程  

看到题目的第一想法

用动态规划五部曲:

  1. 确定dp数组以及下标的含义:dp[i]的定义为:到第i层阶梯有dp[i]种方式能够来到;
  2. 确定递推公式dp[i] = dp[i - 1] + dp[i - 2];
  3. dp数组如何初始化:dp[0] = 1 、dp[1] = 1、dp[2] = 2;
  4. 确定遍历顺序:从递归公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的;
  5. 举例推导dp数组

    按照这个递推公式dp[i] = dp[i - 1] + dp[i - 2],我们来推导一下,dp数组应该是如下的数列: 1 1 2 3 5  8 13 21 34 55。

手搓代码如下:

/*** @param {number} n* @return {number}*/
var climbStairs = function(n) {let dp = [1,1];for(let i =2;i<=n;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];
};

提交成功!

 看完代码随想录之后的想法 

严格遵守对dp[i]的描述,直接没有i=0的时候。

讲解代码如下:

/*** @param {number} n* @return {number}*/
var climbStairs = function(n) {// dp[i] 为第 i 阶楼梯有多少种方法爬到楼顶// dp[i] = dp[i - 1] + dp[i - 2]let dp = [1 , 2]for(let i = 2; i < n; i++) {dp[i] = dp[i - 1] + dp[i - 2]}return dp[n - 1]
};

总结

一开始我就往动态规划的思路上靠,感觉既然只有两种行走方式,那到dp[i]级阶梯的方式肯定就是他的下一级dp[i-1]和下两级dp[i-2],所以到这级阶梯的方式就是到下两级阶梯方式的和。


746. 使用最小花费爬楼梯

题目链接:746. 使用最小花费爬楼梯

文档讲解:代码随想录/使用最小花费爬楼梯

视频讲解:视频讲解-使用最小花费爬楼梯

状态:已完成(1遍)

解题过程  

看到题目的第一想法

用动态规划五部曲:

  1. 确定dp数组以及下标的含义:dp[i]的定义为:从第i层阶梯出发的最小花费dp[i]元;
  2. 确定递推公式dp[i] = dp[i - 1] 和 dp[i - 2] 的最小值 + cost[i];
  3. dp数组如何初始化:dp[0] = cost[0] 、dp[1] =cost[1] ;
  4. 确定遍历顺序:从递归公式中可以看出,dp[i]是依赖 dp[i - 1] 和 dp[i - 2],那么遍历的顺序一定是从前到后遍历的;
  5. 举例推导dp数组

    按照这个递推公式我们来推导一下,dp数组应该是如下的数列: 10 15 30  。

手搓代码如下:

/*** @param {number[]} cost* @return {number}*/
var minCostClimbingStairs = function(cost) {let dp = [cost[0],cost[1]];for(let 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]);
};

提交成功,没有问题。 我在求最后一级阶梯的时候就不用走for循环里了,直接比较从前两节阶梯哪个出发更便宜。

 看完代码随想录之后的想法 

卡尔哥用dp[i]表示到达第i节阶梯的最便宜花费,确实省事一点。

讲解代码如下:

/*** @param {number[]} cost* @return {number}*/
var minCostClimbingStairs = function(cost) {const dp = [0, 0]for (let 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]
};

总结

今天的三道题还算简单,希望明后天可以撑住。

相关文章:

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

509. 斐波那契数 题目链接&#xff1a;509. 斐波那契数 文档讲解&#xff1a;代码随想录/斐波那契数 视频讲解&#xff1a;视频讲解-斐波那契数 状态&#xff1a;已完成&#xff08;1遍&#xff09; 解题过程 看到题目的第一想法 虽然看了卡哥的动态规划五部曲&#xff0c;…...

Ribbon负载均衡(自己总结的)

文章目录 Ribbon负载均衡负载均衡解决的问题不要把Ribbon负载均衡和Eureka-Server服务器集群搞混了Ribbon负载均衡代码怎么写ribbon负载均衡依赖是怎么引入的&#xff1f; Ribbon负载均衡 负载均衡解决的问题 首先Ribbon负载均衡配合Eureka注册中心一块使用。 在SpringCloud…...

Leetcode 力扣92. 反转链表 II (抖音号:708231408)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1,4,3,2…...

OSI七层模型和TCP/IP四层模型的区别

OSI七层模型 1.物理层&#xff08;Physical Layer&#xff09; 实现相邻节点之间比特流的透明传输&#xff0c;尽可能屏蔽传输介质带来的差异。典型设备&#xff1a;集线器&#xff08;Hub&#xff09;。 2.数据链路层&#xff08;Data Link Layer&#xff09; 将网络层传下来…...

在虚拟机上安装MySQL和Hive

在虚拟机上安装MySQL和Hive的步骤如下。这里将分别针对MySQL和Hive的安装进行说明。 MySQL安装步骤 1. 准备工作 下载MySQL安装包&#xff0c;选择与你虚拟机操作系统版本相匹配的MySQL版本&#xff0c;例如MySQL 8.0.35。 2. 卸载旧版本&#xff08;如果已安装&#xff09…...

Vue 2 和 Vue 3 中同步和异步

Vue 2 和 Vue 3 中同步和异步 Vue 2 同步和异步 同步更新 (Synchronous Updates) Vue 2 在数据更新后会进行同步渲染更新,但为了性能优化,Vue 会在内部队列中异步地进行 DOM 更新。这意味着数据变化会立即被捕捉到,但实际的 DOM 更新会被推迟到下一个事件循环队列中。new V…...

ssm150旅游网站的设计与实现+jsp

旅游网站设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅游网站就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞…...

【加密与解密(第四版)】第十四章笔记

第十四章 漏洞分析技术 14.1 软件漏洞原理 缓冲区溢出漏洞&#xff1a;栈溢出 堆溢出、整型溢出&#xff08;存储溢出、计算溢出、符号问题&#xff09; UAF&#xff08;Use-After-Free&#xff09;漏洞 14.2 ShellCode 功能模块&#xff1a;下载执行、捆绑、反弹shell 14.3 …...

鸿蒙系统和安卓系统通过termux搭建Linux系统—Centos

目录 1. 前言 2. 效果图展示 3. 安装termux 4. 安装Centos系统 4.1 更换源 4.2 拉取镜像 4.3 启动centos 5.结尾 1. 前言 大家好&#xff0c;我是jiaoxingk 今天这篇文章让你能够在手机或者平板上使用Linux-Centos系统 让你随时随地都能操作命令行进行装13 2. 效果图展示…...

数据结构的希尔排序(c语言版)

一.希尔排序的概念 1.希尔排序的基本思想 希尔排序是一种基于插入排序算法的优化排序方法。它的基本思想如下: 选择一个增量序列 t1&#xff0c;t2&#xff0c;......&#xff0c;tk&#xff0c;其中 ti > tj, 当 i < j&#xff0c;并且 tk 1。 按增量序列个数k&#…...

使用Node.js搭建服务器

使用Node.js搭建服务器 1.安装Node.js和npm 安装教程自行搜索&#xff08;好多&#xff09;&#xff0c;建议Node.js直接安装在C盘 注意镜像的设置&#xff1a;npm install -g cnpm --registryhttps://registry.npm.taobao.org 注意版本检查&#xff1a; //以下是我使用的版…...

网络编程——多进程的服务器

多进程的网络服务器 多进程的网络服务器是一种使用多个进程来处理并发网络请求的服务器架构。在这种架构中&#xff0c;服务器在接收到客户端连接请求后&#xff0c;会创建一个新的子进程来处理该请求&#xff0c;从而允许服务器同时处理多个客户端连接。多进程服务器通常用于…...

代码随想录算法训练营第二十一天| 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

[LeetCode] 530. 二叉搜索树的最小绝对差 [LeetCode] 530. 二叉搜索树的最小绝对差 文章解释 [LeetCode] 530. 二叉搜索树的最小绝对差 视频解释 题目: 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其…...

【面试】JDK和JVM是什么关系?

目录 1. JDK2. JVM3. 关系 1. JDK 1.Java Development Kit&#xff0c;java开发工具包。2.提供了java应用程序开发所需的所有工具和API。3.JDK包含了JRE&#xff08;Java Runtime Environment&#xff09;,即Java运行环境&#xff0c;以及编译Java源代码的编译器&#xff08;j…...

旺店通与金蝶云星空 就应该这样集成打通

在当今数字化商业环境中&#xff0c;企业需要高效、灵活的系统来支持其业务运营。旺店通和金蝶云星空作为两个领先的企业管理解决方案&#xff0c;它们的集成能够为企业带来无缝的业务流程和数据一致性。本文将详细介绍旺店通与金蝶云星空的全场景集成方案&#xff0c;包括主数…...

linux开发之设备树

设备树的基本概念 1.什么是设备树?为什么叫设备树呢? 设备树是描述硬件的文本文件&#xff0c;因为语法结构像树一样。所以叫设备树。 2.基本名词解释 <1>DT:Device Tree //设备树 <2>FDT:Flattened Device Tree //开放设备树&#xff0c;起源于0penFirmware(0F…...

DQL(数据查询)

目录 1. DQL概念 2. DQL - 编写顺序 3. 基础查询 3.1 查询多个字段 3.2 字段设置别名 3.3 去除重复记录 3.4 案例 4. 条件查询 4.1 语法 4.2 条件 4.3 案例&#xff1a; 5. 聚合函数 5.1 常见的聚合函数&#xff1a; 5.2 语法 5.3 案例&#xff1a; 6. 分组查…...

LeetCode 2951.找出峰值:模拟(遍历)

【LetMeFly】2951.找出峰值&#xff1a;模拟&#xff08;遍历&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-the-peaks/ 给你一个下标从 0 开始的数组 mountain 。你的任务是找出数组 mountain 中的所有 峰值。 以数组形式返回给定数组中 峰值 的…...

软考结束。有什么要说的

1. 竟然是机试&#xff0c;出乎我意料。是 考试机构觉得笔试成本高了么。这次的考试是机试&#xff0c;相比以往有所不一样。感言是不是以后都会在固定地点考试也说不准。 2. 遇到年轻人。 这次旁边的一个女同学第一次参加&#xff0c;还像我询问了一些关于软考的事。我是有…...

Matlab读取Swarm球谐系数,并绘制EWH全球格网图(存在疑问)

ICGEM官网下载 COST-G发布的4040的球谐系数 close all; clearvars -except; % addpath(E:\Code\Tool\Function\GRACE_functions); dir_degree_1 E:\Code\GRACE_data\Degree_1\deg1_coef.txt; dir_c20 E:\Code\GRACE_data\Degree_2\C20_RL06.txt; myDir_Swarm E:…...

Phi-4-mini-reasoning科研协作:Jupyter Notebook嵌入式推理插件

Phi-4-mini-reasoning科研协作&#xff1a;Jupyter Notebook嵌入式推理插件 1. 模型简介 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员&#xff0c;它经过专门微调以提升数学推理…...

Qwen3-14B中文大模型部署教程:token处理优化与生成质量调优

Qwen3-14B中文大模型部署教程&#xff1a;token处理优化与生成质量调优 1. 镜像概述与环境准备 Qwen3-14B是由通义千问团队开发的中文大语言模型&#xff0c;在各类自然语言处理任务中表现出色。本教程将详细介绍如何基于优化定制的私有部署镜像&#xff0c;快速搭建Qwen3-14…...

静态图编译加速失效?分布式梯度同步卡顿?PyTorch 3.0面试官最想听的3层归因逻辑,现在不看明年校招就晚了

第一章&#xff1a;PyTorch 3.0 静态图分布式训练面试概览PyTorch 3.0 并非官方发布的正式版本&#xff08;截至2024年&#xff0c;PyTorch最新稳定版为2.3&#xff09;&#xff0c;但“PyTorch 3.0”在技术面试语境中常作为考察候选人对**静态图编译、分布式训练前沿演进与系统…...

实战AI情感分析:基于快马平台构建电商评论智能洞察系统

最近在做一个电商数据分析项目时&#xff0c;发现人工处理海量商品评论实在太费时费力。于是尝试用AI情感分析技术来提升效率&#xff0c;在InsCode(快马)平台上快速搭建了一个评论智能分析系统。整个过程比想象中简单很多&#xff0c;分享下具体实现思路&#xff1a; 系统架构…...

MiniProfiler 存储策略全解析:SQL Server、Redis、MongoDB 配置指南

MiniProfiler 存储策略全解析&#xff1a;SQL Server、Redis、MongoDB 配置指南 【免费下载链接】dotnet A simple but effective mini-profiler for ASP.NET (and Core) websites 项目地址: https://gitcode.com/gh_mirrors/do/dotnet MiniProfiler 是一款轻量级但功能…...

Win11Debloat:让Windows 11系统轻盈如飞的优化工具

Win11Debloat&#xff1a;让Windows 11系统轻盈如飞的优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and custo…...

ComfyUI-WanVideoWrapper显存优化终极指南:让8GB显卡也能流畅生成高清视频

ComfyUI-WanVideoWrapper显存优化终极指南&#xff1a;让8GB显卡也能流畅生成高清视频 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 还在为视频生成时的显存不足而烦恼吗&#xff1f;ComfyUI-…...

Java开发必看:解决国密SM2算法报错‘Unknown named curve‘的完整指南(附Bouncy Castle配置)

Java开发实战&#xff1a;国密SM2算法Unknown named curve报错深度解析与Bouncy Castle最佳配置指南 金融级Java应用开发中&#xff0c;国密算法SM2的集成就像在钢筋森林里铺设光纤——看似简单却暗藏技术陷阱。当控制台突然抛出Unknown named curve: 1.2.156.10197.1.301这个看…...

嵌入式系统数据校验算法详解与实践

1. 单片机校验算法的重要性在嵌入式系统开发中&#xff0c;数据校验是确保通信可靠性和数据完整性的基础保障。我从事嵌入式开发十多年来&#xff0c;见过太多因为忽略校验而导致系统故障的案例。比如2018年参与的一个工业控制项目&#xff0c;由于CAN总线通信没有采用CRC校验&…...

还在用老方法显示数据?手把手教你用MFC的CListCtrl打造一个带图标的学生信息查询系统

实战MFC&#xff1a;用CListCtrl构建可视化学生管理系统 在桌面应用开发领域&#xff0c;数据展示一直是用户体验的核心环节。传统的表格控件虽然能完成基本功能&#xff0c;但缺乏视觉层次和交互灵活性。MFC中的CListCtrl控件提供了四种视图模式&#xff0c;特别适合需要同时呈…...