class Solution {
public:
int fib(int n) {
if(n<=1) return n;
int dp[2];
dp[0]=0;
dp[1]=1;
for(int i=1;i<n;i++){
int sum=dp[0]+dp[1];
dp[0]=dp[1];
dp[1]=sum;
}
return dp[1];
}
};
class Solution {
public:
int climbStairs(int n) {
if(n<=1) return n;
int dp[3];
dp[1]=1;
dp[2]=2;
for(int i=3;i<=n;i++){
int sum=dp[1]+dp[2];
dp[1]=dp[2];
dp[2]=sum;
}
return dp[2];
}
};
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int dp0=0;
int dp1=0;
for(int i=2;i<=cost.size();i++){
int dpi=min(dp1+cost[i-1],dp0+cost[i-2]);
dp0=dp1;
dp1=dpi;
}
return dp1;
}
};