力扣 70. 爬楼梯

news2024/10/6 10:32:30

题目来源:https://leetcode.cn/problems/climbing-stairs/description/

C++题解(来源代码随想录): 本质上是一道斐波那契数题。

动规五部曲:定义一个一维数组来记录不同楼层的状态

  1. 确定dp数组以及下标的含义。dp[i]: 爬到第i层楼梯,有dp[i]种方法
  2. 确定递推公式。如何可以推出dp[i]呢?首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么;还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么;那么dp[i]就是 dp[i - 1]与dp[i - 2]之和!所以dp[i] = dp[i - 1] + dp[i - 2] 。
  3. dp数组如何初始化。dp[1] = 1,dp[2] = 2
  4. 确定遍历顺序。从递推公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,遍历顺序一定是从前向后遍历的
  5. 举例推导dp数组。
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 <= 2) return n;
        vector<int> dp(2);
        dp[0] = 1; dp[1] = 2;
        int sum = 0;
        for(int i = 2; i < n; i++) {
            sum = dp[0] + dp[1];
            dp[0] = dp[1];
            dp[1] = sum;
        }
        return sum;
    }
};

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

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

相关文章

【Java】JDBC快速入门及详解(MySQL版)

文章目录 1. JDBC概述2. JDBC快速入门2.1 下载驱动jar包2.2 数据准备2.3 创建工程2.4 编写代码 3. JDBC API详解3.1 DriverManager3.2 Connection3.2.1 获取执行SQL对象3.2.1 管理事务 3.3 Statement3.3.1 执行DML语句3.3.2 执行DDL语句 3.4 ResultSet3.4.1 ResultSet对象方法3…

统信UOS V20桌面专业版(1060)

统信UOS V20桌面专业版&#xff08;1060&#xff09;也是发布许久我来发一下体验感受吧。 1.如果你是首次接触统信UOS&#xff0c;1060版本提供了快速上手指南&#xff0c;可以帮助你快速了解统信UOS的基础功能和办公实用小技巧&#xff0c;让你快速上手&#xff0c;降低使用门…

Dockerfile简介

1、什么是Dockerfile 要获得镜像&#xff0c;可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像&#xff0c;那该如何做呢&#xff1f;答案是&#xff1a;Dockerfile Dockerfile其实就是一个文本文件&#xff0c;由一系列命令和参数构成&#xff0c;Docker可以读取Do…

Pytest自动化测试 - 必知必会的一些插件

这可能是B站最详细的pytest自动化测试框架教程&#xff0c;整整100小时&#xff0c;全程实战&#xff01;&#xff01;&#xff01; ​ Pytest拥有丰富的插件架构&#xff0c;超过800个以上的外部插件和活跃的社区&#xff0c;在PyPI项目中以“ pytest- *”为标识。 本篇将列举…

python——案例二 求两个数的和

#案例二 求两个数的和 num1input(请输入第一个数字&#xff1a;) num2input(请输入第二个数字&#xff1a;) sumfloat(num1)float(num2) #计算公式 print(sum) #显示结果 输入num11、num22得到结果sum3

从Vue2到Vue3【七】——Vue2中响应式原理的实现及其缺陷

系列文章目录 内容链接从Vue2到Vue3【零】Vue3简介从Vue2到Vue3【一】Composition API&#xff08;第一章&#xff09;从Vue2到Vue3【二】Composition API&#xff08;第二章&#xff09;从Vue2到Vue3【三】Composition API&#xff08;第三章&#xff09;从Vue2到Vue3【四】C…

JVM入门篇-JVM的概念与学习路线

JVM入门篇-JVM的概念与学习路线 什么是 JVM 定义 Java Virtual Machine - java 程序的运行环境&#xff08;java 二进制字节码的运行环境&#xff09; 好处 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能数组下标越界检查多态 比较 jvm jre jdk 常…

[golang gin框架] 44.Gin商城项目-微服务实战之后台Rbac微服务之权限的增删改查微服务

上一节讲解了[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联,这里讲解权限管理Rbac微服务权限的增删改查微服务 一.实现后台权限管理Rbac之权限增删改查微服务服务端功能 1.创建Access模型 要实现权限的增删改查,就需要…

c刷题(一)

目录 1.输出100以内3的倍数 2.将3个数从大到小输出 3.打印100~200素数 方法一 方法二 4.显示printf的返回值 最大公约数 试除法 辗转相除法 九九乘法表 求十个数的最大值 1.输出100以内3的倍数 法一&#xff1a; int n 0; while (n*3 < 100){printf("%d &q…

Vue-router多级路由

目录 直接通过案例的形式来演示多级路由的用法 文件结构 Banner.vue <template><div class"col-xs-offset-2 col-xs-8"><div class"page-header"><h2>Vue Router Demo</h2></div></div> </template><…

6.2.tensorRT高级(1)-第一个完整的分类器程序

目录 前言1. CNN分类器2. 补充知识2.1 知识点2.2 智能指针封装 总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT …

《MySQL45讲》笔记—索引

索引 索引是为了提高数据查询效率&#xff0c;就像书的目录一样。如下图&#xff0c;索引和数据就是位于存储引擎中&#xff1a; 索引常见模型 哈希表 以键值对存储的数据结构。适用于只有等值查询的场景。 有序数组 在等值查询和范围查询场景中性能都特别优秀。但是有…

Flowable-服务-Rest任务

目录 定义图形标记XML内容界面操作 定义 Rest 任务不是 BPMN 2.0 规范定义的官方任务&#xff0c;在 Flowable 中&#xff0c;Rest 任务是作为一种特殊的服务 任务来实现的&#xff0c;主要调用rest服务使用。 图形标记 由于 Rest 任务不是 BPMN 2.0 规范的“官方”任务&…

记ECC例题

文章目录 题一([HGAME 2022 week4]ECC)题目描述&#xff1a;题目分析&#xff08;概念题&#xff09;&#xff1a; 题二([watevrCTF 2019]ECC-RSA)题目描述&#xff1a;题目分析&#xff08;多项式求根&#xff09;&#xff1a; 题三(ECC)题目描述&#xff1a;题目分析&#xf…

SE11数据表外键应用-SM30 表维护

前言 外键作为数据库表的一个重要属性&#xff0c;但是在SAP中却很少使用&#xff0c;此处简单说明外键在表维护中起到的作用。 为数据库表字段设置外键&#xff0c;并生成表维护后&#xff0c;默认使用外键表作为搜索帮助&#xff0c;且可以校验字段有效值&#xff1b; 设置外…

多线程只需这一篇足够

开玩笑的 本篇详细讲述了多线程的各种细节及操作方法 对锁的各种操作&#xff0c;以及原子性的阐述 原谅我嚣张的标题 Begin&#xff1a;本篇文章尽可能详细的讲述了线程的概念、使用、安全问题&#xff0c;以及消费者生产者模型的设计理念和实现代码。对于单例模式的两种实现代…

Linux——进程控制

目录 1. 进程创建 1.1 fork函数 1.2 fork系统调用内部宏观流程 1.3 fork后子进程执行位置分析 1.4 fork后共享代码分析 1.5 fork返回值 1.6 写时拷贝 1.7 fork常规用法 1.8 fork调用失败的原因 2.进程终止 2.1 进程退出场景 2.2 strerror函数—返回描述错误号的字符…

Hadoop学习指南:探索大数据时代的重要组成——Hadoop概述

前言 在当今大数据时代&#xff0c;处理海量数据成为了一项关键任务。Hadoop作为一种开源的分布式计算框架&#xff0c;为大规模数据处理和存储提供了强大的解决方案。本文将介绍Hadoop的组成和其在大数据处理中的重要作用&#xff0c;让我们一同踏上学习Hadoop的旅程。 Hado…

信用卡欺诈检测案例 -- 机器学习项目基础篇(2)

这个案例面临的挑战是识别欺诈性信用卡交易&#xff0c;以便信用卡公司的客户不会因为他们没有购买的物品而被收取费用。 信用卡欺诈检测中涉及的主要挑战是&#xff1a; 每天都要处理大量数据&#xff0c;模型构建必须足够快&#xff0c;以便及时响应骗局。不平衡的数据&…

Edge解决默认Bing搜索跳转到国内版的问题

近期BingGPT申请通过以后&#xff0c;每次用PC端Edge去跳转的时候不管是否念Proxy咒都会进入国内版本Bing&#xff0c;排查得到默认Bing参数如下 因此&#xff0c;在edge://settings/searchEngines内添加搜索引擎&#xff0c;具体参数如下&#xff1a; 搜索引擎&#xff1a;必应…