509. 斐波那契数
public class Solution {
public int Fib(int n) {
if(n < 2) return n;
int f0 = 0;
int f1 = 1;
int sum = 0;
for(int i = 2;i <= n;i++)
{
sum = f0 + f1;
f0 = f1;
f1 = sum;
}
return f1;
}
}
70. 爬楼梯
public class Solution {
public int ClimbStairs(int n) {
if (n <= 1) return n;
int[] list = new int[n + 1];
list[0] = 0;
list[1] = 1;
list[2] = 2;
for (int i = 3; i <= n; i++)
{
list[i] = list[i - 1] + list[i - 2];
}
return list[n];
}
}
746. 使用最小花费爬楼梯
dp[i]:从第i个台阶到达楼顶的最小花费。
dp[i] = Min(dp[i+2],dp[i+1]) + cost[i]
dp[N-1] = cost[N-1]
dp[N-2] = cost[N-2]
public class Solution {
public int MinCostClimbingStairs(int[] cost) {
int len = cost.Length;
int[] dp = new int[len];
dp[len-1] = cost[len-1];
dp[len-2] = cost[len-2];
for(int i = len - 3;i >= 0 ;i--)
{
dp[i] = dp[i+2] > dp[i+1] ? dp[i+1] + cost[i] :dp[i+2] + cost[i];
}
return dp[0] > dp[1] ? dp[1] : dp[0];
}
}