Day38 动态规划
我的思路:
很简单的递归
解答:
class Solution {
public int fib(int n) {
if(n == 0 || n == 1) {
return n;
}
return fib(n - 1) + fib(n - 2);
}
}
我的思路:
看了题解才明白本质上还是第一题的斐波那契数列(可能这种题目需要自己列举找规律
解答:
class Solution {
public int climbStairs(int n) {
if(n <= 2) {
return n;
}
int[] res = new int[n + 1];
res[1] = 1;
res[2] = 2;
for(int i = 3; i <= n; i ++) {
res[i] = res[i - 1] + res[i - 2];
}
return res[n];
}
}
我的思路:
还是和斐波那契数列类似,需要注意的是,dp要比cost数组长一个单位,要计算的是dp最后一个单位可能最小值
解答:
class Solution {
public int minCostClimbingStairs(int[] cost) {
int[] dp = new int[cost.length + 1];
for(int i = 2; i < dp.length; i ++) {
dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
return dp[dp.length - 1];
}
}