002.爬楼梯

news2024/11/22 15:40:10

1.题目链接:

70. 爬楼梯

2.解题思路:

2.1.题目要求:

 给个阶数 n,要求返回爬完 n 阶有几种方法。

一次可以爬 1 步 或者 2 步。

示例 1
输入:n = 1 
输出:1
解释:有一种方法可以爬到楼顶。 
1. 1 阶

示例 2
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 3
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
示例 4
输入:n = 4
输出:5
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶 + 1 阶 
2. 1 阶 + 1 阶 + 2 阶
3. 1 阶 + 2 阶 + 1 阶
4. 2 阶 + 1 阶 + 1 阶
5. 2 阶 + 2 阶

2.2.思路:

根据示例1234,发现一个规律,n = 3 的方法总数 " 3 " n =2 和 n=1 的方法总数之和,n = 4 同理,所以推论,从 n = 3开始,后一项的方法总数是前两项方法总数之和。

注意 n = 0不存在因为不可能一阶楼梯没走就到一层了

1 2 3 5 8 类比斐波那契数列

2.3.动规五部曲:

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

dp[ i ] 的意思是,爬到第 i 层楼梯的时候,有 dp[ i ] 种爬法。

2.3.2.确定递推公式

推论,从 n = 3开始,后一项的方法总数是前两项方法总数之和。(注意 n = 0不存在)

及 dp[ i ] = dp[ i-1 ] + dp[ i-2 ]

2.3.3.dp数组如何初始化

n = 0 不存在的条件限制 dp数组,只能从i = 1 开始初始化。

所以初始化 dp[ 1 ] = 1 , dp[ 2 ] = 2 。

2.3.4.确定遍历顺序

由 dp[ i-1 ] , dp[ i-2 ] 这样的后两项,来推导 dp [ i ] 这样的前一项,所以遍历顺序由前向后遍历

2.3.5.举例推导dp数组

举例当n为5的时候,dp table(dp数组)应该是这样的

如果代码出问题了,就把dp table 打印出来,看看究竟是不是和自己推导的一样。

2.4.总代码:

初始版

//版本一
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 1) return n; // 因为下面直接对dp[2]操作了,防止空指针
        vector<int> dp(n + 1);
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; i++) { // 注意i是从3开始的
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
};

 

 优化版

// 版本二
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 1) return n;
        int dp[3];
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; i++) {
            int sum = dp[1] + dp[2];
            dp[1] = dp[2];
            dp[2] = sum;
        }
        return dp[2];
    }
};

 

3.遇见的问题:

概念方向一开始好像混淆了一下。

4.记录:

重复的行为,不要期待有新的结果。(除了一些随机事件,一般不会突然醒悟..)

在家学,真是很大的挑战至少对我是这样的...

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

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

相关文章

springBoot集成webSocket并使用postMan进行测试

简单描述 简单来讲&#xff0c;webSocket是一种在http协议基础上的另一种新协议&#xff0c;叫ws协议。 http协议是单工通信&#xff0c;客户端发起请求&#xff0c;服务端收到请求并处理&#xff0c;返回给客户端&#xff0c;然后客户端收到服务端的请求。 ws协议是全双工通…

代码随想录训练营第51天|LeetCode 309.最佳买卖股票时机含冷冻期、 714.买卖股票的最佳时机含手续费

参考 代码随想录 题目一&#xff1a;LeetCode 309.最佳买卖股票时机含冷冻期 如果没有冷冻期&#xff0c;就可以只定义两个状态&#xff0c;加入冷冻期后定义下面的四个状态&#xff1a; 状态一&#xff08; j 0&#xff09;&#xff1a;买入状态&#xff0c;不一定当天买…

设计模式-java

设计模式: 纸上得来终觉浅&#xff0c;绝知此事要躬行 设计原则 1) 单一职责原则 com.zh.designpatterns.design_principles.demo01_single_principle 概念&#xff1a;对类来说的&#xff0c;即一个类应该只负责一项职责。如类A负责两个不同职责&#xff1a;职责1&#x…

[AAAI 2022]多角度意图分解图网络的捆绑推荐

Multi-View Intent Disentangle Graph Networks for Bundle Recommendation捆绑推荐是什么&#xff1f;Bundle recommendation offers promotions of bundled items instead of a single one, which is a common strategy for sales revenue increase and latent customer mini…

谈谈对IO多路复用的select机制的理解

一、技术背景 如果要彻底明白select机制&#xff0c;还是要首先去了解IO&#xff0c;网络编程、Blocking IO、No Blocking IO的相关概念及底层实现。下面只是作为技术背景去介绍这几个概念。 1、理解IO本质 IO从英文本身去解释就是输入输出(Input/Output)&#xff0c;这里不…

web前端期末大作业:基于HTML+CSS+JavaScript实现网上鲜花店网站设计(14页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

手机进销存网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 功能模块包括&#xff1a;员工模块、手机类型模块、供应商模块、采购模块、客户模块、销售模块、统计模块、库存模块 (1…

Springboot内置的工具类之FileCopyUtils

前言 Spring内置的工具类里&#xff0c;最喜欢用的就是文件读写这一部分&#xff0c;虽然原生的写法也没几句&#xff0c;但是就是懒&#xff0c;不想循环、判断什么的&#xff0c;直接调用现成的静态方法&#xff0c;多高效&#xff0c;哈哈&#xff0c;这就是懒人必备。 Res…

UE5——动画混合(2)

一、引言 接上文《UE5——动画混合》&#xff0c;UE5还提供了 遮罩混合、惯性化两种混合&#xff0c;下面将讲述这两种动画混合方式 二、UE5上实现 1、遮罩混合 遮罩混合与《UE5——动画混合》中的 “骨骼的分层混合” 的运行逻辑其实是的一样的。相比起 “骨骼的分层混合”…

【SpringBoot+MyBatis】二级缓存以及使用Redis缓存数据

在MyBatis中&#xff0c;存在一级缓存以及二级缓存。一级缓存是默认自动开启&#xff0c;而二级缓存需要我们手动去开启。但看到这篇文章的人&#xff0c;大部分都是在做项目才发现的问题&#xff1a;每次访问数据都要查询一遍又一遍的数据库&#xff0c;这是在控制台上可以发现…

叶酸偶联N-季铵化壳聚糖(FA-HTCC)

叶酸偶联N-季铵化壳聚糖(FA-HTCC) 中文名称&#xff1a;叶酸偶联N-季铵化壳聚糖 英文名称&#xff1a;FA-HTCC 纯度&#xff1a;95% 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 外观:固体或粘性液体 包装&#xff1a;瓶装/袋装 溶解性&#xff1a;溶于大…

MYSQL 主从复制 --- binlog

一个MYSQL数据库存在的问题 在谈主从复制之前&#xff0c;应该都会有一个疑问&#xff0c;那么就是一个MYSQL数据库存在的问题呢&#xff1f; 1. 读和写所有压力都由一台数据库承担&#xff0c;压力大 2. 数据库服务器磁盘损坏则数据丢失&#xff0c;单点故障 为了解决我们可以…

Spark RDD介绍

RDD 引出问题 Spark是如何将多台机器上的数据通过一个类型来关联实现的&#xff1f; 答&#xff1a;通过RDD类型来实现关联 一、RDD简介 RDD&#xff08;Resilient Distributed Dataset&#xff09;&#xff1a;弹性分布式数据集 RDD的本质&#xff1a; 一个抽象的逻辑上的…

项目运行久了很卡,手动执行垃圾回收机制,秒丝滑

问题 当项目运行久了&#xff0c;内存会被大量占用。如何不重启项目&#xff0c;释放内存&#xff0c;继续丝滑开发呢&#xff1f; 回答 手动执行垃圾回收机制 打开任务管理器康康&#xff1a; 巨卡&#xff0c;无敌卡&#xff0c;解决它&#xff01; 打开命令行工具&…

Kaggle竞赛——Titanic泰坦尼克之灾(保姆级基础版)

Kaggle竞赛网址&#xff1a;https://www.kaggle.com/c/titanic 本次Kaggle泰坦尼克之灾分析过程大致分为&#xff1a; 第1步&#xff1a;了解数据 第2步&#xff1a;分析数据之间的关系 第3步&#xff1a;缺失项数据处理 第4步&#xff1a;特征因子化 第5步&#xff1a;处理特…

DBCO-SS-活性酯|DBCO-SS-NHS酯

DBCO-SS-活性酯|DBCO-SS-NHS酯 名称;DBCO-SS-活性酯|DBCO-SS-NHS酯 CAS NO&#xff1a;1435934-53-4 分子量&#xff1a;565.66 分子式&#xff1a;C28H27N3O6S2 含 量&#xff1a;>95% 外 观&#xff1a;固体粉末 保存&#xff1a;-20避光避湿 结构式&#xff1a; …

记录--手把手带你开发一个uni-app日历插件(并发布)

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 相信我们在开发各类小程序或者H5&#xff0c;甚至APP时&#xff0c;会把uni-app作为一个技术选型&#xff0c;其优点在于一键打包多端运行&#xff0c;较为强大的跨平台的性能。但是&#xff0c;只要开…

我为什么建议前端将Python 作为第二语言?

前言 “如何摆脱不停切图的困局&#xff1f;” 这不是一篇制造焦虑的文章&#xff0c;而是充满真诚建议的Python推广文。 当谈论到编程入门语言时&#xff0c;大多数都会推荐Python和JavaScript。 实际上&#xff0c;两种语言在方方面面都非常强大。 而如今我们熟知的ES6语…

用Java语言简单实现:炸金花,不知道你有没有兴趣跟着笔者来研究一下呀

说实话&#xff0c;到目前为止&#xff0c;笔者学习Java语言也有着进两个多月了吧&#xff01;&#xff01;但是&#xff0c;一直毫无进度&#xff01;博客更新的也很少&#xff0c;仅仅10篇刚出头&#xff0c;而且浏览量也很少&#xff0c;这样很不符合我的气质&#xff01;&a…

汉字风格迁移----FtransGAN

🚀针对的问题 以前的大多数作品都是通过将给定子集的风格转移到未见子集的内容来解决这个问题的。然而,他们只关注同一语言中的字体样式转换。在许多任务中,我们需要学习一种语言的字体信息,然后将其应用到其他语言。现有的方法很难完成这样的任务。 图1。几个应用实例。…