一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。(类似于斐波那契数列)
采用递归方法求解,时间复杂度为O(2^n).
class Solution {
public:
int jumpFloor(int number) {
if(number==1||number==2)
return number;
else
return jumpFloor(number-1)+jumpFloor(number-2);
}
};
采用迭代方法求解,时间复杂度为O(n).
class Solution {
public:
int jumpFloor(int number) {
if(number==1||number==2)
return number;
else{
int LessOne=2;
int LessTwo=1;
int methods=0;
for(int i=3;i<=number;++i){
methods=LessOne+LessTwo;
LessTwo=LessOne;
LessOne=methods;
}
return methods;
}
}
};
另外还可采用矩阵求解,时间复杂度为O(1),但计算过程复杂,数值较大时才能发挥优势,所以综合来看采用迭代方法效果最好。