class Solution
{
public:
int climbStairs(int n)
{
vector<int> dp(n+1, 0);
// dp[0]表示第 0 阶台阶
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++)
{
// 递推公式
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
};
class Solution
{
public:
int climbStairs(int n)
{
// pre表示第 0 阶台阶
int pre = 1;
int cur = 1;
for (int i = 2; i <= n; i++)
{
int tmp = cur;
// 减少空间复杂度
cur = pre + cur;
pre = tmp;
}
return cur;
}
};
class Solution
{
public:
int climbStairs(int n)
{
if(n == 1)
{
return 1;
}
int cur = 2;
int pre = 1;
for(int i = 2; i < n; i++)
{
int net = pre + cur;
pre = cur;
cur = net;
}
return cur;
}
};