题解 | #跳台阶#

跳台阶

http://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4

题意:
        一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

方法一:
递推

思路:dp[i]表示到达第 i 级台阶的方案数。
            因为一次可以跳上1级台阶,也可以跳上2级,所以 i 级台阶可以是从i-1或i-2级台阶过来的。
             因此 i 级台阶的方案数等于从第i-1和第i-2级台阶的方案数之和。(即




class Solution {
public:
    int jumpFloor(int number) {
        vector<int> dp(number+1,0);
        dp[1]=1;//初始化
        dp[2]=2;
        for(int i=3;i<=number;i++){//遍历
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[number];
    }
};
时间复杂度:
空间复杂度:


方法二:
递推+空间优化

思路:
        沿用方法一的思路,做空间优化。
        设x=1,y=2分别是台阶数为1和2的情况(即初始化)。
       
class Solution {
public:
    int jumpFloor(int number) {
        if(number<=1)
            return number;
        int x=1,y=2,t;//初始化
        for(int i=3;i<=number;i++){//遍历
            t=y;
            y=x+y;
            x=t;//x赋值为原先的y
        }
        return y;
    }
};

时间复杂度:
空间复杂度:





全部评论

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-20 20:15
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务