描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
示例1
输入:
2
返回值:
2
示例2
输入:
7
返回值:
21
递归:
class Solution {
public:
int jumpFloor(int number) {
if (number < 2) return 1; // 递归终止条件
return jumpFloor(number-1) + jumpFloor(number - 2); // 递归实现
}
};动态规划:
class Solution {
public:
int jumpFloor(int number) {
if (number < 2) return 1; // 初始条件
else {
vector<int> dp(number+1, 1); // 初始条件
for (int i = 2; i <= number; ++i) {
dp[i] = dp[i-1] + dp[i-2]; // 动态规划
}
return dp[number];
}
}
};空间优化:
class Solution {
public:
int jumpFloor(int number) {
if (number < 2) return 1; // 初始条件
else {
int dp1 = 1, dp2 = 1, dp; // 初始条件
for (int i = 2; i <= number; ++i) {
dp = dp1 + dp2; // 动态规划
dp2 = dp1;
dp1 = dp;
}
return dp;
}
}
};


京公网安备 11010502036488号