1. LeetCode 746. 使用最小花费爬楼梯

该题目要求计算在可以一次走一步或者两步的情况下,到达结尾时的最小消耗。
在这道题里面它的状态表示就是走到当前位置的最小消耗。
在这道题里面它的状态转移方程就是 dp[i] = min(dp[i-1], dp[i-2]) + c[i]。
它的初始化就是第 0 个位置设置为 c[0],第一个位置设置为 c[1]。因为状态转移方程需要依靠前两个位置的值,所以直接初始化前两个位置。
填表顺序就是从前往后就好。
返回值就是 dp 表第 sz-1 个位置的值和第 sz-2 个位置的值的最小值。
class Solution {
public:
int minCostClimbingStairs(vector<int>& c) {
int sz = c.size();
vector<int> dp(sz + 1);
dp[0] = c[0];
dp[1] = c[1];
for (int i = 2; i < sz; ++i) {
dp[i] = min(dp[i - 1], dp[i - 2]) + c[i];
}
return min(dp[sz - 1], dp[sz - 2]);
}
};
2. LeetCode 91. 解码方法



