Source: Min Cost Climbing Stairs - LeetCode
状态转移方程
d p [ i ] = m i n ( d p [ i − 1 ] + c o s t [ i − 1 ] , d p [ i − 2 ] + c o s t [ i − 2 ] ) dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]) dp[i]=min(dp[i−1]+cost[i−1],dp[i−2]+cost[i−2])
题解
python
class Solution:
def minCostClimbingStairs(self, cost: List[int]) -> int:
n=len(cost)
dp=[0 for i in range(n+1)]
for i in range(2,n+1):
dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
return dp[n]
c++
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n= cost.size();
vector<int>dp(n+1);
for (int i = 2; i < n+1; ++i) {
dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
}
return dp.back();
}
};