力扣 746. 使⽤最⼩花费爬楼梯 C++

题目描述

在这里插入图片描述

解题思路

1.首先要弄清楚,这个站在楼梯上是没有花费的,只有从楼梯上跳到下一阶楼梯才会有花费
2.最后要到达的位置,是最后一个需要收费的楼梯的上面一阶
3.注意一次只能跳一阶或两阶(这里可以参考一下 力扣70的爬楼梯问题)
4.dp[i]的含义是跳到这一阶所需要的最小花费,dp[i] = min((dp[i-1] + cost[i-1]) ,(dp[i-2] + cost[i-2]));

代码

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

猜你喜欢

转载自blog.csdn.net/qq_63524016/article/details/129822749