力扣刷题 70.爬楼梯

题干

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

解题思路

从楼底到楼顶共有n阶楼梯,我们要求爬n阶楼梯有几种方法,我们思考n阶楼梯可以从第几阶楼梯爬来,根据我们每次可以爬1或2个台阶,可得n阶楼梯是由第n-1阶台阶走一个,或第n-2阶台阶走两个到达。因此爬n阶楼梯的方法数其实是爬n-1阶楼梯的方法数加爬n-2阶楼梯的方法数。用dp数组可以记录每一阶楼梯的方法数。

动态规划五部曲

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

dp[i]:爬到 i 阶楼梯有dp[i]种方法

2.确定递推公式

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

3.dp数组如何初始化

dp[1] = 1 dp[2] = 2

需要注意的是:题目中说了n是一个正整数,题目根本就没说n有为0的情况。

所以我们可以不用讨论dp[0]的初始化,只初始化dp[1] = 1,dp[2] = 2,然后从i = 3开始递推,这样才符合dp[i]的定义。

4.确定遍历顺序

从递推公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,遍历顺序一定是从前向后遍历的

5.举例推导dp数组

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

70.爬楼梯

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

其实我们可以发现这道题目其实就是斐波那契数列,只不过题目中没有给出明显的递推公式,导致本题增加了难度。

完整代码如下:

class Solution {
public:int climbStairs(int n) {if(n < 3)return n;//初始化dp数组int dp[n+1];dp[1] = 1;dp[2] = 2;for(int i = 3; i <=n; i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
};

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

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

相关文章

电子邮件免费版有哪些?免费注册电子邮箱

电子邮件有付费版和免费版两种类型&#xff0c;付费版通常具有更大的电子邮箱容量和更强大的电子邮箱功能。但是对于我们个人用户或者是中小型企业来说注册电子邮箱免费版的就够日常使用了。电子邮件的免费版提供商有Zoho Mail、微软、腾讯等&#xff0c;今天我们就来具体了解下…

探索简站WordPress主题:jianzhanpress.com的魅力所在

着互联网的普及和发展&#xff0c;越来越多的人开始关注网站建设。作为最受欢迎的内容管理系统之一&#xff0c;WordPress为无数站长提供了便捷、高效的建站体验。而在众多WordPress主题资源中&#xff0c;jianzhanpress.com以其丰富的主题数量和高质的设计赢得了广大WordPress…

Ubuntu系统的初始化

1. 更新系统 sudo apt update && sudo apt upgrade -y2. 安装必要的软件包 sudo apt install -y build-essential curl git vim3. 配置SSH sudo apt install -y openssh-server sudo systemctl enable ssh sudo systemctl start ssh4. 配置时间同步 sudo apt insta…

Django中的实时通信:WebSockets与异步视图的结合

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在现代Web应用程序中&#xff0c;实时通信已经成为了必不可少的功能之一。无论是在线聊天、…

基于python制作陆地掩膜

想要一个和输入raster大小和投影都一样的掩膜&#xff0c;然后找到了以下代码&#xff0c;这里的110就是给陆地付的值。速度算很快 # -*- coding: utf-8 -*- """ Created on Tue Apr 23 16:41:35 2024author: Asus """ import numpy as np from…

光纤、以太网电缆和 DSL 的比较:技术指南

了解光纤、以太网电缆和 DSL 之间的差异对于做出有关互联网连接的明智决策至关重要。本技术指南对这些技术进行了全面比较&#xff0c;讨论了它们的独特功能、性能指标和应用。它旨在为您提供必要的知识&#xff0c;以选择最适合您的特定需求的选项。 光纤、以太网电缆和 DSL …

【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序(万字博文)

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 目录 …

【QEMU系统分析之启动篇(十六)】

系列文章目录 第十六章 QEMU系统仿真的预配置分析 文章目录 系列文章目录第十六章 QEMU系统仿真的预配置分析 前言一、QEMU是什么&#xff1f;二、QEMU系统仿真的启动分析1.系统仿真的初始化代码2.主循环数据初始化3. qmp_x_exit_preconfig()qemu_init_board()qemu_create_cli…

js 同步、异步的概念,async 和 await 的说明

啥是同步、啥是异步 JavaScript中&#xff0c;同步&#xff08;Synchronous&#xff09;和异步&#xff08;Asynchronous&#xff09;是两种处理代码执行顺序的主要方式&#xff0c; 同步&#xff08;Synchronous&#xff09;&#xff1a; 执行顺序&#xff1a;在同步编程中…

【C++】优先队列

优先队结构的不同物理结构与常用操作算法 优先队列是一种特殊的队列,队列中的元素具有优先级,每次弹出操作会弹出优先级最高的元素。 优先队列常用的物理结构有: 1. 数组:简单但不高效,插入和删除操作需要移动大量元素,时间复杂度高。 2. 二叉堆:是一种完全二叉树,通常用数…

MySQL创建帐号和权限设定

1 使用root权限登录MySQL服务器 mysql -u root -p; 2 创建用户名&#xff0c;用于项目管理或者普通人员&#xff0c;只能操作特定的数据库 CREATE USER 用户名localhost IDENTIFIED BY 密码; CREATE USER 用户名% IDENTIFIED BY 密码; 这将为远程客户端创建一个MySQL用户&am…

Nacos采坑:非集群Nacos不要使用同一个MySQL数据库

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Nacos 致力于帮助您…

【Linux】使用Jenkins + svn + springboot自动构建jar包并自动打包在服务器上运行

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

面包屑新玩法,ReactRouter+Ant Design实现动态渲染

在Ant Design中,可以通过Breadcrumb组件结合react-router库实现动态生成面包屑导航。具体步骤如下: 定义路由配置数据结构 我们需要在路由配置中添加额外的面包屑相关信息,例如面包屑标题、icon等。例如: const routes [{path: /,breadcrumbName: 首页},{path: /users,brea…

remote: HTTP Basic: Access deniedfatal: Authentication failed for

$ git push -u origin main remote: HTTP Basic: Access denied fatal: Authentication failed for https://gitcode.com/edenl/GD32E350_hid_keyboard.git/ 使用访问令牌做为密码登录即可。

拼多多面试题——力扣版测试用例纠错

最近我看到力扣上这个题目&#xff0c;用了三种方法&#xff0c;结果没有一种正确&#xff0c;我就纳闷儿了&#xff0c;为何总有一个测试用例过不了&#xff0c;结果我发现这个测试用例确实有问题啊。。。。。 题目&#xff1a; 表&#xff1a;Logs ----------------------…

LeetCode_链表的回文结构

✨✨所属专栏&#xff1a;LeetCode刷题专栏✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 题目描述&#xff1a; 对于一个链表&#xff0c;请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构。给定一个链表的头指针A&#xff0c;请返回一个bo…

JS----前端不同格式的 UUID生成

前端 UUID生成 export const generateUUID () > {let timestamp new Date().getTime()let performanceNow (typeof performance ! undefined && performance.now && performance.now() * 1000) || 0return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replac…

多端统一开发框架Taro、UniApp和WeApp这三个应用各自在前端开发领域有着独特的定位和功能

Taro、UniApp和WeApp这三个应用各自在前端开发领域有着独特的定位和功能&#xff0c;下面是对它们的详细介绍以及三者之间的对比&#xff0c;包括各自的优缺点和社区维护支持程度。 一、应用介绍 Taro Taro是一个多端统一开发框架&#xff0c;支持使用React语法编写一次代码…

关于页面尺寸变动,echarts或地图等自适应的一种方法(监听特定DOM元素尺寸变化)

1.问题 项目中,页面做了响应式布局.大量使用了弹性布局,导致盒子没有固定的宽高,在菜单切换或者窗口缩放时,echarts或者地图元素就会出现扭曲,错版,填充不完全,溢出等问题. 当通过监听window的resize事件时,难以精准捕捉目标容器,同时echarts的resize()方法并不一定达到效果 …