首页 > 其他 > 详细

LeetCode 70. Climbing Stairs

时间:2016-02-13 23:03:12      阅读:312      评论:0      收藏:0      [点我收藏+]

只能用1、2相加得到n,求有几种加法。

ver0:递归,意料之中的TLE

1 class Solution {
2 public:
3     int climbStairs(int n) {
4         if(n==1) return 1;
5         if(n==2) return 2;
6         return climbStairs(n-1) + climbStairs(n-2);
7     }
8 };

ver1:略加修改

 1 class Solution {
 2 public:
 3     int climbStairs(int n) {
 4         if(n==1) return 1;
 5         if(n==2) return 2;
 6         int* p = new int[n];
 7 
 8         p[0] = 1, p[1] = 2;
 9         for(int i=2;i<n;++i)
10             p[i] = p[i-1] + p[i-2];
11 
12         return p[n-1];
13     }
14 };

 

其他版本代码,以后再琢磨。

1 class Solution {
2 public:
3     int climbStairs(int n) {
4        int x[3]={1,1,0},k=1;
5        while(++k<=n)    x[k%3] = x[(k-1)%3] + x[(k-2)%3];
6        return x[n%3];
7     }
8 };

 

LeetCode 70. Climbing Stairs

原文:http://www.cnblogs.com/co0oder/p/5188389.html

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