class Solution {
public:
int climbStairs(int n) {
if(n < 3) return n;
int ans, x = 1, y = 2;
for(int i = 3; i <= n; i++){
ans = x + y;
x = y;
y = ans;
}
return ans;
}
};
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n = cost.size();
if(n < 2) return cost[0];
for(int i = 2; i < cost.size(); i++)
cost[i] += min(cost[i-1], cost[i-2]);
return min(cost[n-1], cost[n-2]);
}
};
class Solution {
public:
int fib(int N) {
if(N < 2) return N;
int f1 = 0, f2 = 1, f3;
for(int i = 2; i <= N; i++){
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
};
class Solution {
public:
int tribonacci(int n) {
if(n < 3) return n == 0 ? 0 : 1;
vector<int> v = {0, 1, 1, 0};
for(int i = 3; i <= n; i++){
v[3] = v[0] + v[1] + v[2];
v[0] = v[1];
v[1] = v[2];
v[2] = v[3];
}
return v[3];
}
};