本文主要是介绍【刷题】代码随想录算法训练营第三十八天|509、斐波那契数,70、爬楼梯,746、使用最小花费爬楼梯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 509、斐波那契数
- 70、爬楼梯
- 746、使用最小花费爬楼梯
509、斐波那契数
讲解:https://programmercarl.com/0509.%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.html
动规是由前一个状态推导出来的,而贪心是局部直接选最优的,对于刷题来说就够用了。
class Solution {
public:int fib(int n) {if(n<=1) return n;vector<int> dp(n+1);dp[0] = 0;dp[1] = 1;for (int i=2;i<=n;i++){dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
};
70、爬楼梯
讲解:https://programmercarl.com/0070.%E7%88%AC%E6%A5%BC%E6%A2%AF.html
class Solution {
public:int climbStairs(int n) {if (n <= 1) return n; // 因为下面直接对dp[2]操作了,防止空指针vector<int> dp(n + 1);dp[1] = 1;dp[2] = 2;for (int i = 3; i <= n; i++) { // 注意i是从3开始的dp[i] = dp[i - 1] + dp[i - 2];}return dp[n];}
};
746、使用最小花费爬楼梯
讲解:https://programmercarl.com/0746.%E4%BD%BF%E7%94%A8%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9%E7%88%AC%E6%A5%BC%E6%A2%AF.html
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {vector<int> dp(cost.size()+1);dp[0] = 0;dp[1] = 0;for (int i = 2;i<=cost.size();i++){dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);}return dp[cost.size()];}
};
这篇关于【刷题】代码随想录算法训练营第三十八天|509、斐波那契数,70、爬楼梯,746、使用最小花费爬楼梯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!