class Solution {
public int fib(int n) {
if(n == 0)return 0;
if(n == 1)return 1;
int[] f = new int[n + 1];
f[0] = 0;
f[1] = 1;
for(int i = 2; i <= n; i++){
f[i] = f[i-1] + f[i-2];
}
return f[n];
}
}
class Solution {
public int climbStairs(int n) {
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
if(n == 0 || n == 1)return 1;
for(int i = 2; i <= n; i++){
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
}
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
int[] dp = new int[n + 1];
dp[0] = 0;
dp[1] = 0;
for(int i = 2; i <= n; i++){
dp[i] = Math.min((dp[i - 1] + cost[i - 1]), (dp[i - 2]+ cost[i - 2]));
}
return dp[n];
}
}