1. 程式人生 > 其它 >Leetcode-劍指 Offer II 088. 爬樓梯的最少成本

Leetcode-劍指 Offer II 088. 爬樓梯的最少成本

劍指 Offer II 088. 爬樓梯的最少成本

陣列的每個下標作為一個階梯,第 i 個階梯對應著一個非負數的體力花費值 cost[i](下標從 0 開始)。

每當爬上一個階梯都要花費對應的體力值,一旦支付了相應的體力值,就可以選擇向上爬一個階梯或者爬兩個階梯。

請找出達到樓層頂部的最低花費。在開始時,你可以選擇從下標為 0 或 1 的元素作為初始階梯。

線性dp

狀態轉移方程:$ tmp=min(ans[i-1]+cost[i-1],ans[i-2]+cost[i-2])$

題設條件:0 或 1 的元素作為初始階梯,即登上0和1的花費為0

注意一下題目要求是最後登上階梯頂,最後在給定的有代價的階梯之外還有一級階梯

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        vector<int> ans;
        ans.push_back(0);
        ans.push_back(0);
        for (int i=2;i<=cost.size();i++){
            int tmp=min(ans[i-1]+cost[i-1],ans[i-2]+cost[i-2]);
            ans.push_back(tmp);
        }
        return ans[cost.size()];
    }
};