這題是要解決最小花費爬樓梯的問題。這是一個經典的動態規劃 (Dynamic Programming, DP) 題目,它要求我們找到一種最省力的方式爬到樓梯的頂端。這個問題非常適合練習 DP 的思維,尤其是狀態轉移方程的設計和優化。
題目:
給定一個整數陣列 cost,其中 cost[i] 是您在索引 i 的樓梯所需的花費。每次可以選擇跨一步或跨兩步,目標是到達樓梯頂端並最小化花費。
實作:
class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        int dp1 = cost[0];
        int dp2 = cost[1];
        for (int i = 2; i < n; ++i) {
            int current = std::min(dp1, dp2) + cost[i];
            dp1 = dp2;
            dp2 = current;
        }
        return std::min(dp1, dp2);
    }
};
參考:
#746. Min Cost Climbing Stairs