参考爬梯子问题
这道题是斐波那契数列数列相关:
dp[0] = 1,dp[1]=1,dp[2]=2
dp[n] = dp[n-1]+dp[n-2];
我们可以对空间进行进一步优化,我们只用两个整型变量a和b来存储过程值,首先将a+b的值赋给b,然后a赋值为原来的b,所以应该赋值为b-a即可。这样就模拟了上面累加的过程,而不用存储所有的值,参见代码如下
class Solution {
public:
int climbStairs(int n) {
int a = 1, b = 1;
while (n--) {
b += a;
a = b - a;
}
return a;
}
};