• Climbing Stairs


     1 int climbStairs(int n)
     2 {
     3     if(n<=0)
     4         return 0;
     5     if(n==1)
     6         return 1;
     7     if(n==2)
     8         return 2;
     9     return climbStairs(n-1)+climbStairs(n-2);
    10 }

    青蛙跳台阶问题,第一反应就是上面的代码了,结果是 超时

     1     int climbStairs(int n) {
     2         if(n<=0)
     3             return 0;
     4         int C[n+1];
     5         int i;
     6         for(i=0;i<n+1;++i)
     7             C[i]=0;
     8         C[1]=1;
     9         C[2]=2;
    10         for(i=3;i<n+1;++i)
    11             C[i]=C[i-1]+C[i-2];
    12         return C[n];
    13     }

    AC,可是这个空间复杂度是O(n),可以优化的,没有必要保存数组,只需要3个变量就可以了

     1     int climbStairs(int n) {
     2         if(n<=0)
     3             return 0;
     4         int i,first,second,result;
     5         if(n==1)
     6             return 1;
     7         if(n==2)
     8             return 2;
     9         first=1;
    10         second=2;
    11         for(i=3;i<=n;++i){
    12             result=first+second;
    13             first=second;
    14             second=result;
    15         }
    16         return result;
    17     }
  • 相关阅读:
    11.26
    数组
    JavaScript
    2018.11.26
    input标签
    HPH 函数
    jQuery
    19/1/3数组
    2018/12/26//循环体
    12/25
  • 原文地址:https://www.cnblogs.com/crane-practice/p/3622674.html
Copyright © 2020-2023  润新知