Day38 动态规划
509. 斐波那契数
我的思路:
很简单的递归
解答:
class Solution {public int fib(int n) {if(n == 0 || n == 1) {return n;}return fib(n - 1) + fib(n - 2);}
}
70. 爬楼梯
我的思路:
看了题解才明白本质上还是第一题的斐波那契数列(可能这种题目需要自己列举找规律
解答:
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];}
}
746. 使用最小花费爬楼梯
我的思路:
还是和斐波那契数列类似,需要注意的是,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];}
}