leetcode【动态规划】-----70. Climbing Stairs(爬楼梯)

1、题目描述

2、分析

        输入一个n,问爬上n层台阶,有多少种方法,一次可以爬一个或者两个。很明显这其实是一道斐波那契数列的变形,菲波那切数列在我们之前通常作为递归的理解,但是如果输入的数字比较大,递归很容易造成爆栈原因就是递归层次太多。所以在这里我们意识到这个问题是斐波那契之后,一定不要选择递归的做法。而是使用一个变量来保存中间变量,这样其实就是将这个问题,变成了动态规划的做法。之前总结的动态规划的知识。(https://blog.csdn.net/zl6481033/article/details/84585115)。

3、代码

class Solution {
public:
    int climbStairs(int n) {
        if(n==1) return 1;
        if(n==2) return 2;//这一句可以不加
        int first=1;
        int second=2;
        for(int i=3;i<=n;++i){
             int newway=second+first;
             first=second;
             second=newway;
        }
        return second;
        
    }
};

4、相关知识点

        动态规划的简单使用。涉及到斐波那契的使用上面的代码应该就已经可以了,时间复杂度和空间复杂度要更小的话就需要更难一点的数学知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值