LeetCode算法心得——爬楼梯(记忆化搜索+dp)

大家好,我是晴天学长,第二个记忆化搜索练习,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪


1)爬楼梯

在这里插入图片描述

假设你正在爬楼梯。需要 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 阶

提示:

1 <= n <= 45


2) .算法思路

  • 爬楼梯(记忆化搜索) 。
  • 从楼顶开始下(和打家劫舍一样),但是没有限制信息,都要搜。
  • 爬法用一个数组记录起来,有几种爬法。

3) .算法步骤

1.定义一个整型数组 memo,用于存储记忆化搜索的结果。
2.创建 climbStairs 方法来启动算法。在该方法中,初始化 memo 数组,并将其所有元素初始化为 -1。
3.调用 dfs 方法,将目标阶数 n 作为参数,并返回结果。
4.在 dfs 方法中,首先检查是否已经搜索过当前阶数 n 的结果。如果在 memo 数组中存在已计算的值,则直接返回该值作为结果,避免重复计算。
1)如果当前阶数 n 小于 0,表示没有可行的爬楼梯方式,返回 0。
2)如果当前阶数 n 等于 1,表示只有一种方式到达,返回 1。
3)如果当前阶数 n 等于 2,表示有两种方式到达,返回 2。
4)否则,根据动态规划的思想,当前阶数 n 的结果等于爬到 n-1 阶和 n-2 阶的方法数之和。使用递归调用 dfs 方法,分别计算到达 n-1 阶和 n-2 阶的方法数,并将它们相加。
5)将计算得到的结果存储在 memo 数组中,以备后续使用。
6)返回当前阶数 n 的结果作为最终答案。


4).代码示例

//方法1class Solution {int[] memo;public int climbStairs(int n) {memo = new int[n+1];Arrays.fill(memo, -1);return dfs(n);}private int dfs(int n) {if (n < 0) {return 0;}if (n == 2) {return 2;} else if (n == 1) {return 1;}if (memo[n] != -1) {return memo[n];}int result = dfs(n - 1) + dfs(n - 2);memo[n] = result;return result;}}
//放法2 dp动态规划class Solution {int[] dp;public int climbStairs(int n) {dp = new int[46];dp[1] = 1;dp[2] = 2;if (n<=2){return dp[n];}for (int i = 3; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}}

5).总结

  • 动规中要给定一个增量,要不是在dfs中,要不是在数据的前面。

试题链接:

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

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

相关文章

Redis主从复制,哨兵和Cluster集群

主从复制&#xff1a; 主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff08;和同步&#xff09;&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。 缺陷&#xff1a;故障恢复无法自动化…

C# ReadOnlyRef Out

C# ReadOnly ReadOnly先看两种情况1.值类型2.引用类型 结论 Ref Out ReadOnly官方文档 ReadOnly 先看两种情况 1.值类型 当数据是值类型时&#xff0c;标记为Readonly时&#xff0c;如果再次设置值&#xff0c;会提示报错&#xff0c;无法分配到只读字段 public class A {pri…

Vue中Vue router和axios的封装使用。

模拟场景&#xff1a; 当用户登录后&#xff0c;后台会返回一个token给前端&#xff0c;前端下次进入首页后&#xff0c;会先判断token是否过期&#xff0c;如果过期自动进入登录页面。配置路由&#xff1a; 1.安装 npm install vue-router42.安装后在src目录下创建router文…

基于Springboot的美容院管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的美容院管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&a…

qt treeview 删除节点

Qt 中&#xff0c;要删除 QTreeView 中的节点&#xff0c;可以通过操作其模型&#xff08;QAbstractItemModel&#xff09;来实现。以下是一个简单的示例&#xff0c;展示如何从 QTreeView 中删除节点。 假设你有一个 QTreeView&#xff0c;它使用了 QStandardItemModel 作为模…

Redis(事务和持久化)(很重要!)

事务的定义&#xff1a; Redis中的事务是指一组命令的集合&#xff0c;这些命令可以在一个原子操作中执行。在Redis中&#xff0c;可以使用MULTI命令开始一个事务&#xff0c;然后使用EXEC命令来执行事务中的所有命令&#xff0c;或者使用DISCARD命令来取消事务。事务可以确保…

爬取春秋航空航班信息

一、使用fiddler爬取小程序春秋航空航班信息 使用Fiddler爬取春秋航空微信小程序&#xff08;手机上由于网络问题&#xff0c;无法进入&#xff0c;使用电脑版&#xff09; 搜索航班信息 搜索记录 使用Fiddler查找url(没有得到有效url) 继续查找&#xff0c;发现航班信息列…

数据结构:二叉树(初阶)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下二叉树方面的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 …

振南技术干货集:制冷设备大型IoT监测项目研发纪实(3)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 &#xff08;制冷设备对于便利店为何如何重要&#xff1f;了解一下你所不知道的便利店和新零售行业。关 于电力线载波通信的论战。&#xff09; 2、电路设计 2.1 防护电路 2.1.1 强电防护…

vue 中为什么需要虚拟DOM、VDOM 是如何生成的、VDOM 如何做 diff 的?

一、vue 中为什么需要虚拟DOM 1.1本概念 基本上所有框架都引入了虚拟 DOM 来对真实 DOM 进行抽象&#xff0c;也就是现在大家所熟知的VNode 和VDOM Virtual DOM 就是用js 对象来描述真实 DOM&#xff0c;是对真实 DOM 的抽象&#xff0c;由于直接操作 DOM 性能低但是is 层的操…

Jmeter执行某个请求时,先删除cookie信息

1、增加BeanShell PreProcessor 2、添加如下内容 import org.apache.jmeter.protocol.http.control.CookieManager;// Get the current threads cookie manager CookieManager cm sampler.getCookieManager();// Clear all cookies for this domain cm.clear();

力扣labuladong——一刷day45

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣270. 最接近的二叉搜索树值二、力扣404. 左叶子之和三、力扣617. 合并二叉树四、力扣623. 在二叉树中增加一行 前言 二叉树的递归分为「遍历」和「分解…

LeetCode:2304. 网格中的最小路径代价(C++)

目录 2304. 网格中的最小路径代价 题目描述&#xff1a; 实现代码&#xff1a; dp&#xff08;dp有很多相似的经典题目&#xff0c;比较简单&#xff0c;不再给出解析&#xff09; 2304. 网格中的最小路径代价 题目描述&#xff1a; 给你一个下标从 0 开始的整数矩阵 grid …

Redis篇---第十四篇

系列文章目录 文章目录 系列文章目录前言一、为什么Redis的操作是原子性的,怎么保证原子性的?二、了解Redis的事务吗?四、Redis 的数据类型及使用场景前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

旧电脑升级记录

我把家里的电脑搬来了北京&#xff0c;但是这个配置在今天已经完全不够用了&#xff0c;而且我也喜欢折腾&#xff0c;我就想着花点时间&#xff0c;画最少的钱来升级一下。我对电脑的硬件还是懂一点的&#xff0c;装机也完全不是问题。 H61的主板,所以cpu我从E3 1230V2&#…

前端js调取摄像头并实现拍照功能

前言 最近接到的一个需求十分有意思&#xff0c;设计整体实现了前端仿 微信扫一扫 的功能。整理了一下思路&#xff0c;做一个分享。 tips: 如果想要实现完整扫一扫的功能&#xff0c;你需要掌握一些前置知识&#xff0c;这次我们先讲如何实现拍照并且保存的功能。 一. windo…

了解1688API接口测试 | 1688 API接口测试指南

在当今电子商务快速发展的时代&#xff0c;1688作为中国最大的B2B电子商务平台之一&#xff0c;为商家提供了丰富的商品资源和交易平台。为了方便商家进行商品管理和交易操作&#xff0c;1688提供了一系列的API接口&#xff0c;通过这些接口&#xff0c;商家可以方便地获取商品…

什么是凸函数

假设函数是定义在某个向量空间的凸子集上的实值函数&#xff0c;并且&#xff0c;如果对于中的任何两个向量和&#xff0c;都满足&#xff1a; 则称为上的凸函数

ubuntu 安装 towhee

安装Towhee pip3 install towhee如果你想在 towhee 中安装模型 pip3 install towhee.models打开python终端 python3引入towhee 数据转换是 Towhee 的核心&#xff1b;管道只是在有向无环图中连接在一起的一系列转换。所有预构建的 Towhee 管道都有代表当前任务的名称。 fr…

Oracle数据库如何定位trace file位置

用一个示例来说明吧。 在导入master key时&#xff0c;出现错误&#xff1a; ADMINISTER KEY MANAGEMENTIMPORT KEYS WITH SECRET "my_secret"FROM /tmp/export.expIDENTIFIED BY keypwd5 WITH BACKUP; ADMINISTER KEY MANAGEMENT * ERROR at line 1: ORA-46655…