时间复杂度:O(n)
空间复杂度:O(n),因为利用了一个长度为n+1的链表。
class Solution {
public:
int climbStairs(int n) {
if(n<=2) return n;
vector<int> dp(n+1, 1); //定义了n+1个整型元素的向量,且给出每个元素的初值为1
for(int i=2; i<=n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];
}
};
时间复杂度:O(n)
空间复杂度:O(1)
class Solution {
public:
int climbStairs(int n) {
if(n <=2 ) return n;
int pre1 = 2, pre2 = 1, cur;
for(int i=2; i<n; i++){
cur = pre1 + pre2;
pre2 = pre1;
pre1 = cur;
}
return cur;
}
};