概述
题目
非常简单容易理解的线性dp,有n阶台阶,一次爬1或2个,爬到n阶有多少种方法,
有1阶 dp[1]=1
有2阶 dp[2]=2 (1+1 0+2)
依次类推
dp[i]:代表到第i阶台阶的方法,
第i阶台阶可以分别由i-2
走2步 和i-1
走1步到达
dp方程dp[i]=dp[i-1]+dp[i-2]
最小花费爬楼梯
在上一题原理上+每层台阶的花费
- 需要注意爬到最高层有2种情况
- 已经在第n层
- 在第n-1层可以不需要花费跳过第n层到达最高层,
有点无语
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int len=cost.size();
if(len==0)
return 0;
vector<int> dp(len);
dp[0]=cost[0];
dp[1]=cost[1];
for(int i=2;i<len;i++) dp[i]=min(dp[i-1],dp[i-2])+cost[i];
return min(dp[len-1],dp[len-2]);
}
};
最后
以上就是复杂眼神为你收集整理的爬楼梯(leetcode_070 dp)的全部内容,希望文章能够帮你解决爬楼梯(leetcode_070 dp)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复