码迷,mamicode.com
首页 > 其他好文 > 详细

刷题70. Climbing Stairs

时间:2020-02-20 09:18:21      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:push   pre   code   limit   方法   优化   问题   ==   mem   

一、题目说明

题目70. Climbing Stairs,爬台阶(楼梯),一次可以爬1、2个台阶,n层的台阶有几种爬法。难度是Easy!

二、我的解答

类似的题目做过,问题就变得非常简单。首先用递归方法计算:

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

非常不好意思,Time Limit Exceeded

那就用dp算法吧:

class Solution{
    public:
        int climbStairs(int n){
            if(n==1) return 1;
            if(n==2) return 2;
            vector<int>dp;
            dp.push_back(1);
            dp.push_back(2);
            for(int i=2;i<n;i++){
                dp.push_back(dp[i-1]+dp[i-2]);
            }
            return dp[n-1];
        }
};

性能:

Runtime: 4 ms, faster than 55.03% of C++ online submissions for Climbing Stairs.
Memory Usage: 8.4 MB, less than 51.47% of C++ online submissions for Climbing Stairs.

三、优化措施

不优化了!

刷题70. Climbing Stairs

标签:push   pre   code   limit   方法   优化   问题   ==   mem   

原文地址:https://www.cnblogs.com/siweihz/p/12249161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!