题解 | #最小花费爬楼梯#
最小花费爬楼梯
http://www.nowcoder.com/practice/6fe0302a058a4e4a834ee44af88435c7
动态规划
到达楼顶花费的最小值可以想成从楼顶往下2层或者从楼顶往下1层上来花费的最小值,由此递推,可设dp[i]为从第i楼往上走花费的最小值,则dp[i]的递推式为:
前面的min是找出到第i楼的最小花费,后面cost[i]则是从i楼向上走所需的花费。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cost int整型vector
* @return int整型
*/
int minCostClimbingStairs(vector<int>& cost) {
// write code here
if(cost.size()==1) return cost[0];
vector<int> dp = {cost[0], cost[1]};
for(int i = 2; i < cost.size(); i++){
dp.push_back(min(dp[i-1],dp[i-2])+cost[i]); // 从第i楼走花费的最小值
}
return min(dp[dp.size()-1],dp[dp.size()-2]);
}
};