该题与斐波那契数列如出一辙,当前状态只与前两个状态有关,且为前两者之和。利用两个变量保存前两个状态来代替dp数组,可节省空间。 要跳上第n级台阶,要么从第n-1级台阶跳上去,要么从第n-2级台阶跳上去。故而,跳上第n级台阶的可选方案数目,为跳上第n-1级台阶的方案数目和跳上第n-2级台阶的之和。
class Solution {
public:
int jumpFloor(int number) {
if (number == 1)
return 1;
if (number == 2)
return 2;
int dp1 = 1;
int dp2 = 2, dpn = 2;
for (int i = 3; i <= number; i++) {
dpn = dp1 + dp2;
dp1 = dp2;
dp2 = dpn;
}
return dpn;
}
};
京公网安备 11010502036488号