题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解法
普通递归:太多重复时间复杂度O(2^n)
时间复杂度:O(2^n)
空间复杂度:O(1)
class Solution {
public:
int jumpFloor(int number) {
if(number<=1)
return 1;
if(number==2)
return 2;
return jumpFloor(number-1) + jumpFloor(number-2);
}
};
动态规划:时间复杂度:O(n)
时间复杂度:O(n)
空间复杂度:O(1)
class Solution {
public:
int jumpFloor(int number) {
int fn = 1, fnplus1 = 2;
while(--number){
fnplus1 += fn;
fn = fnplus1 - fn;
}
return fn;
}
};