leetcode刷题——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 阶

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/climbing-stairs
分析:简单类型,这个题属于数学类,第一眼没看出来,再看是斐波那契数列,这个就比较熟悉了,两种解法

一是递推公式,原来这也是种动态规划啊

class Solution {
public:
    int climbStairs(int n) {
        if(n<=2)
        return n;
        int a=1,b=2;
        int s=a+b;
        for(int i=3;i<=n;i++){
            s=a+b;
            a=b;
            b=s;
        }
        return s;
    }
};

二是递归运算,提交显示超时,这种还是算了吧

class Solution {
public:
    int climbStairs(int n) {
        return n<=2?n:climbStairs(n-1)+climbStairs(n-2);    
    }
};

 

你可能感兴趣的:(Leetcode)