【力扣每日一题】——爬楼梯

简介: 动态规划入门算法题——爬楼梯

一、题目描述

原题链接
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶

二、题目分析

如果用递归进行求解的话,在进行递归运算时存在大量的重复计算,我们假设递归树的深度为n,则结点数为2^n 因此时间复杂度为O( n^2)。如果n的值稍微大一些我们的程序就会运行超时。因此我们用动态规划来优化代码。
求解
首先我们先确定DP的状态和转移方程

  • 状态变量: dp[n]表示爬n阶台阶的所有可能情况的总和
  • 状态转移方程: dp(n) = dp(n-1) +dp(n-2)
  • 初始条件: dp(0)=0
  • 边界条件: 因为n是正整数,故不需要考虑n<0的情况,等于n即终止状态转移方程

我们每次进行计算后就保存计算结果,这样保证每次计算都只是计算一次,继而解决重复计算的问题。

三、代码实现

class Solution {
    public int climbStairs(int n) {
        //特判,防止n=1时dp[2]下标越界
         if (n==1) {
            return 1;        
        }
        //定义数组用来存储每次计算的结果
    int[] dp=new int[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];
    }
}
相关文章
|
存储 机器学习/深度学习 缓存
一看就懂!图解 Kotlin SharedFlow 缓存系统
一看就懂!图解 Kotlin SharedFlow 缓存系统
408 2
|
人工智能 JavaScript 定位技术
微信的接口都有哪些?
【10月更文挑战第17天】微信的接口都有哪些?
1196 43
|
10月前
|
存储 关系型数据库 MySQL
【免费动手教程上线】阿里云RDS MySQL推出大容量高性能存储:高性能本地盘(最高16TB存储空间)、高性能云盘(最高64TB存储空间)
阿里云RDS MySQL提供高性能本地盘与高性能云盘等存储方案,满足用户大容量、低延迟需求。高性能本地盘单盘最大16TB,IO延时微秒级;高性能云盘兼容ESSD特性,支持IO性能突发、BPE及16K原子写等能力。此外,阿里云还提供免费动手体验教程,帮助用户直观感受云数据库 RDS 存储性能表现。
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
777 29
|
资源调度 监控 前端开发
React Native环境配置、初始化项目、打包安装到手机,以及开发小知识
React Native环境配置、初始化项目、打包安装到手机,以及开发小知识
763 1
React Native环境配置、初始化项目、打包安装到手机,以及开发小知识
|
Web App开发 tengine 应用服务中间件
Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本
新版发布 近日,轻量级开源 Web 服务器 Tengine 发布了2.3.0版本,新增如下特性: ngx_http_proxy_connect_module [1] ,该模块让 Tengine 可以用于正向代理场景,支持对 CONNECT 方法请求的处理; HTTP2 Server粒度控制[...
22373 97
|
存储 缓存 算法
垃圾收集底层算法--三色标记详解
垃圾收集底层算法--三色标记详解
430 0
垃圾收集底层算法--三色标记详解
|
存储 缓存 安全
基于GitHub/七牛云 + PicGo 搭建属于Typora的图床
基于GitHub/七牛云 + PicGo 搭建属于Typora的图床
基于GitHub/七牛云 + PicGo 搭建属于Typora的图床