链接: 509. 斐波那契数
链接: 70. 爬楼梯
链接: 746. 使用最小花费爬楼梯
509. 斐波那契数
class Solution {
public int fib(int n) {
if(n == 0) return 0;
if(n == 1) return 1;
// 定义dp数组
int[] dp = new int[n];
// 初始化
dp[0] = 1;
dp[1] = 1;
// 递推公式,打印数组
for(int i = 2; i<n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n-1];
}
}
70. 爬楼梯
class Solution {
public int climbStairs(int n) {
if(n == 1) return 1;
if(n == 2) return 2;
int[] dp = new int[n];
dp[0] = 1;
dp[1] = 2;
for(int i = 2; i < n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n-1];
}
}
746. 使用最小花费爬楼梯
- 遇到的困难
实现的时候没有注意dp数组的大小是需要大于cost数组的大小的
lass Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
if(n == 0 || n == 1) return 0;
int[] dp = new int[n+1];
dp[0] = 0;
dp[1] = 0;
for(int i = 2; i <= cost.length; i++){
dp[i] = Math.min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2]);
}
return dp[cost.length];
}
}