算法题解记录8+++爬楼梯(百日筑基)

题目描述:

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

解题准备:

        1.猜测该题可能涉及的基础操作:目前看不出来。

        2.拿特殊的题目尝试一下:

                可以发现,第一层台阶非常特殊,虽然题目提供两种操作,但是我们只能爬1步,因此只有1种方案。

            3.筛查题目条件:题目仅一个输入,表示有几层台阶。其为我们提供两个操作,一次爬升一楼,或一次爬升两楼。

            4.理解:假设我们想爬第n层台阶,要不从n-1层开始爬,要不从n-2层开始爬【除了n=1的情况,题目提供n>=1】

            5.猜测:由此可以猜测,想知道第n层台阶有几种爬法,极大可能和n-2,n-1这两层台阶有关。

解题难点1分析:

        虽然猜测n层台阶与n-1、n-2可能有关系,但是未证实,其难点,是找到关系内容。

        1:如何找到三者的关系?

                我们的目标是,找到爬n层的所有方案(虽然只要求给出方案的数目),假设采用穷举法。

                假设num【x】表示爬第x层的所有方案数目。(使x>2)【以下的所有数据,默认不超出限制】

                当n=x时,x-1到x,是一种方案,x-2到x,也是一种方案。忽略其它,单单最后一步,一共有两种方案。

                面对x-1,x-3到x-1可以走2步,x-2到x-1可以走1步。同样是两种方案。

                如果爬到x-1和x-2的所有方案num【x-1】和num【x-2】,之间没有重复的序列,就可以证明num【x】=num【x-1】+num【x-2】。

        2:如何证明:x-1和x-2,之间一定不存在重复?

                对于x-1,1st.如果x-1是从x-3直接跳到x-1,那么掠过x-2,不存在重复。【x-3到达x-2也是一个步骤】

                2nd.如果x-1,从x-2爬升到x-1,那么由于x-2到x-1多一步骤,故不重复。

至此证明完毕。

递归代码:

class Solution {public int climbStairs(int n) {if(n==1){return 1;}int[] data=new int[n];data[0]=1;data[1]=2;return helper(n-1, data);}private int helper(int temp, int[] data){if(temp==1){return 2;}else if(temp==0){return 1;}if(data[temp-1]>0&&data[temp-2]>0){return data[temp-1]+data[temp-2];}else if(data[temp-2]>0){return helper(temp-1, data)+data[temp-2];}else if(data[temp-1]>0){return helper(temp-2, data)+data[temp-1];}data[temp]=helper(temp-1, data)+helper(temp-2, data);return data[temp];}
}

以上内容即我想分享的关于力扣热题8的一些知识。

        我是蚊子码农,如有补充,欢迎在评论区留言。个人也是初学者,知识体系可能没有那么完善,希望各位多多指正,谢谢大家。

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

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

相关文章

KVM虚拟机

文章目录 QEMU-KVM介绍虚拟网卡流程网卡透访流程 QEMU-KVM介绍 QEMU ● QEMU是一个主机上的VMM (Virtual machine monitor), 通过动态二进制模拟CPU&#xff0c;并提供一系列的硬件模型&#xff0c;使Guest OS能够与Host硬件交互。 ● QEMU的代码中有完整的虚拟机实现&#xf…

【C++】1.从C语言转向C++

目录 一.对C的认识 二.C的关键字 三.命名空间 3.1命名空间的定义 3.2命名空间的使用 四.C的输入与输出 五.缺省参数 5.1全缺省参数 5.2半缺省参数 六.函数重载 七.引用 7.1引用的特性 7.2引用和指针的区别 八.内联函数 九.auto关键字&#xff08;C1…

WEB漏洞——XXE

文章目录 前言一、XXE简述及XML基础XXE简述XML基础xml简介文档格式xml树结构xml其它xml语法1、格式良好的xml2、编写第一段XML代码DTD介绍内部文档声明(即DTD在XML源文件中)外部文档声明(DTD位于XML源文件的外部)XML文档构建模块Elements(元素)数量词的用法Attributes(属…

常州南京旅游安排

第一天&#xff1a;中华恐龙园初体验与市区美食 上午&#xff08;10:30 - 12:00&#xff09; 早晨提前出发&#xff0c;争取早点进入&#xff0c;以减少热门项目的排队时间。10:00 到达园区后&#xff0c;首先前往“4D过山车”等热门项目&#xff0c;这些项目通常人气较高&am…

CISA :恶意软件分析平台Malware Next-Gen全新升级

本周三&#xff0c;美国网络安全和基础设施安全局&#xff08;CISA&#xff09;发布了新版恶意软件分析平台Malware Next-Gen&#xff0c;现在公众可以提交任意恶意软件样本供 CISA 分析。 据悉&#xff0c;Malware Next-Gen 可用于检查恶意软件样本中是否存在可疑项目。它最初…

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成 目录 数据生成 | Matlab实现基于SNN浅层神经网络的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于SNN浅层神经网络的数据生成&#xff0c;运行环境Matlab2021b及以上&#xff1b; …

在windows中anaconda中安装fasttext (whl 文件安装)

Anaconda安装第三方包&#xff08;whl文件&#xff09; windows 安装fasttext 一直不成功&#xff0c;python 版本3.8 网上教程都是 https://www.lfd.uci.edu/~gohlke/pythonlibs/#fasttext 下载然后安装&#xff0c;但是这个网站里我没找到哈哈哈。。。 然后就是成功方案&am…

Pygame教程10:在背景图片上,添加一个雪花特效

------------★Pygame系列教程★------------ Pygame经典游戏&#xff1a;贪吃蛇 Pygame教程01&#xff1a;初识pygame游戏模块 Pygame教程02&#xff1a;图片的加载缩放旋转显示操作 Pygame教程03&#xff1a;文本显示字体加载transform方法 Pygame教程04&#xff1a;dra…

移植 amd blas 到 cuda 生态

1&#xff0c;下载源码 GitHub - ROCm/rocBLAS: Next generation BLAS implementation for ROCm platform $ git clone --recursive https://github.com/ROCm/rocBLAS.git 2&#xff0c; 编译 2.1 不带Tensile的编译 如果是在conda环境中&#xff0c;需要deactive conda 环境…

信息学奥赛一本通T1457-Power Strings【KMP】

信息学奥赛一本通T1457-Power Strings - C语言网 (dotcpp.com) #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int N1e6100; char str[N]; int nex[N]; int res0; signed main() {while(scanf("%s",st…

[2024]最新激活Navicat教程附激活码

PS&#xff1a;在开始前&#xff0c;建议先断开本地网络&#xff01;&#xff01;&#xff01;建议先断开本地网络&#xff01;&#xff01;&#xff01;建议先断开本地网络&#xff01;&#xff01;&#xff01; 1 安装 1.1 点击下一步 1.2 许可证选择“我同意”&#xff0c…

【云计算】云网络产品体系概述

云网络产品体系概述 在介绍云网络产品体系前&#xff0c;先介绍几个与云计算相关的基础概念。 阿里云在基础设施层面分为 地域 和 可用区 两层&#xff0c;关系如下图所示。在一个地域内有多个可用区&#xff0c;每个地域完全独立&#xff0c;每个可用区完全隔离&#xff0c;同…

ViT:拉开Trasnformer在图像领域正式挑战CNN的序幕 | ICLR 2021

论文直接将纯Trasnformer应用于图像识别&#xff0c;是Trasnformer在图像领域正式挑战CNN的开山之作。这种简单的可扩展结构在与大型数据集的预训练相结合时&#xff0c;效果出奇的好。在许多图像分类数据集上都符合或超过了SOTA&#xff0c;同时预训练的成本也相对较低   来源…

安装 Kali NetHunter (完整版、精简版、非root版)、实战指南、ARM设备武器化指南

From&#xff1a;https://www.kali.org/docs/nethunter/ NetHunter 实战指南&#xff1a;https://www.vuln.cn/6430 乌云 存档&#xff1a;https://www.vuln.cn/wooyundrops 1、Kali NetHunter Kali NetHunter 简介 Net&#xff08;网络&#xff09;&#xff0c;hunter&#x…

今天讲讲MYSQL数据库事务怎么实现的!

目录 什么是数据库事务 Mysql如何保证原子性 Mysql如何保证持久性 MySQL怎么保证隔离性 事务隔离级别 脏读的解决 不可重复读的解决 幻读的解决 MVCC实现 Read View 那么RC、RR级别下的InnoDB快照读有什么不同&#xff1f; 什么是数据库事务 数据库事务是指一组数据…

各个微前端框架的优劣浅谈

各个微前端框架都有其独特的优势和劣势&#xff0c;下面我将针对几个主流的微前端框架进行简要的优劣分析&#xff1a; single-spa 优势&#xff1a; 轻量级&#xff1a;single-spa是一个非常轻量级的微前端框架&#xff0c;它主要提供了一个加载和管理微应用的机制&#xff0c…

Geotrust SSL证书:安全加密与身份验证的坚实后盾

Geotrust&#xff0c;作为全球知名的数字证书颁发机构&#xff0c;以其高度的安全性、可靠性和广泛的兼容性&#xff0c;在网络安全领域中占据了举足轻重的地位。尤其在SSL&#xff08;Secure Sockets Layer&#xff09;证书服务上&#xff0c;Geotrust更是凭借其卓越的技术实力…

掌握ChatGPT写作技巧,写出精彩绝伦的论文

ChatGPT无限次数:点击直达 掌握ChatGPT写作技巧&#xff0c;写出精彩绝伦的论文 掌握ChatGPT写作技巧&#xff0c;写出精彩绝伦的论文 引言 在当今信息爆炸的时代&#xff0c;文字创作已经成为人们表达思想和见解的重要方式之一。而随着人工智能技术的不断发展&#xff0c;C…

【HTTP访问某个域名详细过程】

HTTP访问某个域名详细过程 详细探讨一下在类Unix系统&#xff08;如Linux&#xff09;中&#xff0c;浏览器访问一个域名时涉及的系统调用和进程间通信。这个过程非常复杂&#xff0c;简化描述。 用户输入域名&#xff1a; 用户在浏览器地址栏输入域名并按下回车键。 浏览器…

LongVLM:让大模型解读长视频 SOTA 的方法

LongVLM&#xff1a;让大模型解读长视频 SOTA 的方法 使用LongVLM处理长视频的步骤LongVLM 方法3.1 总体架构3.2 局部特征聚合3.3 全局语义整合 效果4.1 实验设置4.2 主要结果4.3 消融研究4.4 定性结果 论文&#xff1a;https://arxiv.org/pdf/2404.03384.pdf 代码&#xff1a…