首页 > 其他 > 详细

70:Climbing Stairs【DP】

时间:2015-04-10 16:56:19      阅读:199      评论:0      收藏:0      [点我收藏+]

题目链接:click~

/*题意:n阶的台阶,每次只能上一步或两步,共有多少种方法 */

/**
 *思路:简单递推,d[i] = d[i-1] + d[i-2]
 *      两种方法,一种空间复杂度O(1),另一种O(n)
 */


//O(1)
class Solution {
public:
    int climbStairs(int n) {
        if(n <= 2) return n;
        int d1 = 1, d2 = 2, d3;
        for(int i = 3; i <= n; i ++) {
            d3 = d1+d2;
            d1 = d2;
            d2 = d3;
        }
        return d3;
    }
};


/* O(n)
class Solution {
public:
    int climbStairs(int n) {
        int *d = new int[n+1];
        if(n <= 2) return n;
        d[1] = 1, d[2] = 2;
        for(int i = 3; i <= n; i++)
            d[i] = d[i-1] + d[i-2];
        return d[n];
    }
};
*/

  

70:Climbing Stairs【DP】

原文:http://www.cnblogs.com/jzmzy/p/4414687.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!