变态跳台阶问题

版权声明:本文为博主原创文章,若要转载注明出处即可,欢迎分享! https://blog.csdn.net/qq_41822235/article/details/81664758

普通跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

 f(n)=f(n-1)+f(n-2)+......+f(1)+1

经过数值举例后,我们发现,台阶对应的跳法实际上是

1    2    4    8    16    32......

故代码实现就非常明确

class Solution {
public:
    int jumpFloorII(int number) {
        int ret =1;
       for(int  i = 2; i <= number; ++i)
       {
           ret *= 2;
       }
        return ret;
    }
};

精益求精,计算2^(n-1)次方,用移位运算会更快。

class Solution {
public:
    int jumpFloorII(int number) {
        int ret=1; 
        return ret<<(number-1);
    }
};

猜你喜欢

转载自blog.csdn.net/qq_41822235/article/details/81664758
今日推荐