70.爬楼梯
题目描述
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意: 给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶
解题思路
动态规划
- 定义状态: 设
dp[i]表示爬到第i阶楼梯的方法数。 - 状态转移方程:
dp[i] = dp[i-1] + dp[i-2],即爬到第i阶楼梯的方法数等于爬到第i-1阶楼梯的方法数加上爬到第i-2阶楼梯的方法数。 - 初始状态:
dp[1] = 1,dp[2] = 2。 - 遍历顺序: 从小到大遍历,计算每一层楼梯的方法数。
特殊案例
- 如果输入
n为 1 或 2,则直接返回n。
C#代码实现
public int ClimbStairs(int n) {// 如果楼梯只有一阶或者两阶,直接返回阶数if (n == 1 || n == 2) {return n;}// 创建一个数组,长度为n+1int[] dp = new int[n + 1];// 初始化数组,第一阶和第二阶的步数都为1dp[1] = 1;dp[2] = 2;// 从第三阶开始,动态规划计算步数for (int i = 3; i <= n; i++) {// 动态规划转移方程,dp[i] = dp[i - 1] + dp[i - 2]dp[i] = dp[i - 1] + dp[i - 2];}// 返回最后一步的步数return dp[n];
}
C代码实现
int climbStairs(int n) {// 如果楼梯只有一阶或者两阶,直接返回阶数if (n == 1 || n == 2) {return n;}// 定义一个数组,用来存储阶数对应的斐波那契数int* dp = (int*)malloc(sizeof(int) * (n + 1));// 初始化数组,斐波那契数从1开始,所以dp[1]和dp[2]都等于1dp[1] = 1;dp[2] = 2;// 从第三阶开始,斐波那契数等于前两阶的和for (int i = 3; i <= n; i++) {dp[i] = dp[i - 1] + dp[i - 2];}// 返回斐波那契数int result = dp[n];// 释放内存free(dp);return result;
}
时间复杂度和空间复杂度
- 时间复杂度:O(n),其中 n 是楼梯的阶数。需要计算每一层楼梯的方法数。
- 空间复杂度:O(n)。使用了一个大小为 n+1 的数组来保存中间结果。
相关文章:
70.爬楼梯
题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意: 给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶…...
【论文解读】ICLR 2024高分作:ViT需要寄存器
来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2309.16588 摘要: Transformer最近已成为学习视觉表示的强大工具。在本文中,我们识别并表征监督和自监督 ViT 网络的特征图中的伪影。这些…...
【Redis】AOF 基础
因为 Redis AOF 的实现有些绕, 就分成 2 篇进行分析, 本篇主要是介绍一下 AOF 的一些特性和依赖的其他函数的逻辑,为下一篇 (Redis AOF 源码) 源码分析做一些铺垫。 AOF 全称: Append Only File, 是 Redis 提供了一种数据保存模式, Redis 默认不开启。 AOF 采用日志的形式来记…...
C语言—每日选择题—Day50
一天一天的更新,也是达到50天了,精选的题有250道,博主累计做了不下500道选择题,最喜欢的题型就是指针和数组之间的计算呀,不知道关注我的小伙伴是不是一直在坚持呢?文末有投票,大家可以投票让博…...
[C/C++]——内存管理
学习C/C的内存管理 前言:一、C/C的内存分布二、C语言中动态内存管理方式三、C中动态内存管理方式3.1、new/delete操作符3.1.2、new/delete操作内置类型3.1.3、new/delete操作自定义类型 3.2、认识operator new和operator delete函数3.3、了解new和delete的实现原理3…...
PDF文件的限制编辑,如何设置?
想要给PDF文件设置一个密码防止他人对文件进行编辑,那么我们可以对PDF文件设置限制编辑,设置方法很简单,我们在PDF编辑器中点击文件 – 属性 – 安全,在权限下拉框中选中【密码保护】 然后在密码保护界面中,我们勾选【…...
Linux 中使用 docker 安装 Elasticsearch 及 Kibana
Linux 中使用 docker 安装 Elasticsearch 及 Kibana 安装 Elasticsearch 和 Kibana安装分词插件 ik_smart 安装 Elasticsearch 和 Kibana 查看当前运行的镜像及本地已经下载的镜像,确认之前没有安装过 ES 和 Kibana 镜像 docker ps docker images从远程镜像仓库拉…...
在Flutter中使用PhotoViewGallery指南
介绍 Flutter中的PhotoViewGallery是一个功能强大的插件,用于在应用中展示可缩放的图片。无论是构建图像浏览器、相册应用,还是需要在应用中查看大图的场景,PhotoViewGallery都是一个不错的选择。 添加依赖 首先,需要在pubspec…...
c语言中的static静态(1)static修饰局部变量
#include<stdio.h> void test() {static int i 1;i;printf("%d ", i); } int main() {int j 0;while (j < 5){test();j j 1;}return 0; } 在上面的代码中,static修饰局部变量。 当用static定义一个局部变量后,这时局部变量就是…...
生信算法4 - 获取overlap序列索引和序列的算法
生信序列基本操作算法 建议在Jupyter实践,python版本3.9 1. 获取overlap序列索引和序列的算法实现 # min_length 最小overlap碱基数量3个 def getOverlapIndexAndSequence(a, b, min_length3):""" Return length of longest suffix of a matching…...
springboot 学习网站
Spring Boot 系列教程https://www.docs4dev.com/ Spring Boot 教程汇总 http://www.springboot.wiki/ Spring Cloud 微服务教程 http://www.springboot.wiki/ 1、自定义banner https://www.cnblogs.com/cc11001100/p/7456145.html 2、事件和监听器 https://blog.csd…...
论文笔记:A review on multi-label learning
一、介绍 传统的监督学习是单标签学习,但是现实中一个实例可能对应多个标签。这篇文章介绍了多标签分类的定义和评价指标、多标签学习的算法还有其他相关的任务。 二、问题相关定义 2.1 多标签学习任务 假设 X R d X R^d XRd,表示d维的输入空间&am…...
接口文档 YAPI介绍
YAPI介绍 YAPI使用流程...
LeetCode 300最长递增子序列 674最长连续递增序列 718最长重复子数组 | 代码随想录25期训练营day52
动态规划算法10 LeetCode 300 最长递增子序列 2023.12.15 题目链接代码随想录讲解[链接] int lengthOfLIS(vector<int>& nums) {//创建变量result存储最终答案,设默认值为1int result 1;//1确定dp数组,dp[i]表示以nums[i]为结尾的子数组的最长长度ve…...
Improving IP Geolocation with Target-Centric IP Graph (Student Abstract)
ABSTRACT 准确的IP地理定位对于位置感知的应用程序是必不可少的。虽然基于以路由器为中心(router-centric )的IP图的最新进展被认为是前沿的,但一个挑战仍然存在:稀疏IP图的流行(14.24%,少于10个节点,9.73%孤立)限制了图的学习。为了缓解这个问题,我们将目标主机(ta…...
华为技面三轮面试题
1. 最长回文子串 -- 中心扩散法 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释&…...
Linux arm架构下构建Electron安装包
上篇文章我们介绍 Electron 基本的运行开发与 windows 安装包构建简单流程,这篇文章我们从零到一构建 Linux arm 架构下安装包,实际上 Linux arm 的构建流程,同样适用于 Linux x86 环境,只不过需要各自的环境依赖,Linu…...
【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 NLP 部分
【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 NLP 部分 概述NLP 简介文本处理词嵌入上下文理解 文本数据加载to_device 函数构造数据加载样本数量 len获取样本 getitem 分词构造函数调用函数轮次嵌入 RobertaRoberta 创新点NSP (Next Sentence Prediction…...
推免那些事
平生第一次搞推免,也是最后一次。错失了一些机会,也有幸获得了一些机会,值得祝庆,也值得反思。 以下记录为个人流水账。 个人背景 我的背景可以算不是非常好了,况且今年211受歧视比较严重。 学校:211&…...
华清远见嵌入式学习——QT——作业2
作业要求: 代码运行效果图: 登录失败 和 最小化 和 取消登录 登录成功 和 X号退出 代码: ①:头文件 #ifndef LOGIN_H #define LOGIN_H#include <QMainWindow> #include <QLineEdit> //行编辑器类 #include…...
考公学习追踪器:用数据驱动备考,打造个人学习仪表盘
1. 项目概述:一个为“考公”学子量身定制的学习追踪器如果你正在准备公务员考试,或者身边有朋友在“考公”,那你一定对那种“学了忘,忘了学”的循环深有体会。行测的题海、申论的素材、时政的热点,每天的学习任务像一座…...
资源管理器约束设计:从核心原理到YARN/K8s实战配置
1. 项目概述:理解资源管理器约束的核心价值在任何一个复杂的计算或资源管理系统中,资源管理器(Resource Manager, 简称RM)都扮演着“交通警察”或“调度中心”的角色。它的核心职责是公平、高效地分配有限的系统资源&a…...
从白噪声到ARMA谱:平稳随机信号功率谱的实战解析
1. 平稳随机信号功率谱密度的工程意义 第一次接触功率谱密度这个概念时,我也被那一堆数学公式搞得头晕。直到有次在调试通信设备时,发现接收端总是有奇怪的干扰,导师让我做个频谱分析,这才真正明白功率谱密度到底有什么用。简单来…...
隔热型防火入户门 烟气阻隔密封构造原理
在高层住宅建筑消防设计体系中,防火入户门是分隔防火分区、阻断烟火蔓延的核心构件,其中隔热型防火入户门凭借优异的耐火性能与烟气阻隔能力,成为民用住宅工程的标配产品,其密封构造设计直接决定防火隔烟效果与消防验收合规性。隔…...
终极React Native Navigation VR应用开发指南:打造沉浸式虚拟环境和菜单导航体验
终极React Native Navigation VR应用开发指南:打造沉浸式虚拟环境和菜单导航体验 【免费下载链接】react-native-navigation A complete native navigation solution for React Native 项目地址: https://gitcode.com/gh_mirrors/re/react-native-navigation …...
STM32驱动安信可Rd-04毫米波雷达:硬件改造、I2C驱动移植与参数调优全攻略
1. 项目概述:从零开始驱动安信可Rd-04雷达模组最近在做一个智能感应的小项目,需要用到人体存在检测,对比了几种方案后,最终选择了安信可的Rd-04毫米波雷达模组。这玩意儿体积小、功耗低,最关键的是价格相当亲民&#x…...
【模块化设计-14】深入解析 RT-Thread syswatch 系统监控模块:保障系统稳定的核心卫士
在嵌入式系统开发中,系统的稳定性是重中之重。RT-Thread 提供的 syswatch(系统监控)模块,专为解决线程异常阻塞、保障系统持续运行设计。本文将从模块设计理念、核心功能、配置项、工作流程到实际测试,全方位解析 sysw…...
大模型爆发期!程序员现在转型,还能赶上风口吗?
文章目录前言一、2026年,大模型风口到底有多猛?二、90%的人不敢转型,都是被这3个误区坑了误区1:转大模型必须会高数、会从头训模型误区2:我只会写CRUD,没资格转大模型误区3:现在转已经晚了&…...
基于Python与Telegram API构建消息抓取与备份工具实践
1. 项目概述与核心价值 最近在折腾一个挺有意思的小工具,起因是团队内部用Telegram群组做日常沟通和文件分享,时间一长,信息量爆炸,想找点历史资料或者特定文件简直是大海捞针。手动翻记录?效率低到令人发指。市面上虽…...
别再手动改配置了!Spring Boot项目集成Apollo配置中心保姆级教程(含热更新实战)
Spring Boot与Apollo配置中心深度整合:告别重启的配置管理革命 在微服务架构盛行的今天,传统配置文件管理方式正面临前所未有的挑战。每次修改数据库连接池参数需要重启服务?调整线程池大小必须中断业务?这些困扰Java开发者多年的…...
