這題是要解決最小花費爬樓梯的問題。這是一個經典的動態規劃 (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