目录
题目:
代码(首刷自解 2024年2月19日):
空间复杂度为O(N),如果想要优化空间复杂度,则只用三个变量进行状态转移也可以,参考
代码随想录 Leetcode509. 斐波那契数-CSDN博客
class Solution {
public:
int climbStairs(int n) {
if (n == 1) return 1;
if (n == 2) return 2;
/*dp[i]代表到i所需要的步数*/
vector<int> dp(n + 1);
/*初始化*/
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; ++i) {
dp[i] = dp[i - 1] + dp[i - 2];//递推公式
cout<<"dp["<<i<<"] = "<<dp[i]<<" ";
}
cout<<endl;
return dp[n];
}
};
代码(二刷自解 2024年3月10日)
class Solution {
public:
int climbStairs(int n) {
if (n == 1) return 1;
if (n == 2) return 2;
// dp
vector<int> dp(n + 1);
dp[1] = 1;
dp[2] = 2;
// 递推公式: dp[i] = dp[i - 1] + dp[i - 2]
for (int i = 3; i < n + 1 ; ++i) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
};
代码(三刷自解 2024年6月17日 go)
func climbStairs(n int) int {
// 一层楼梯
if n <= 2 {
return n
}
dp := make([]int,n + 1)
dp[1] = 1
dp[2] = 2
for i := 3; i <= n; i++ {
dp[i] = dp[i - 1] + dp[i - 2]
}
return dp[n]
}