来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/min-cost-climbing-stairs 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
解答
解题步骤:
- 确定 dp 数组以及下标的含义:dp数组代表走到每个台阶的最小花费
- 确定递推公式:可以爬一级或两级,说明最小花费是前一级或前两级的最小花费
- dp 数组如何初始化
确定遍历顺序
/*** @param {number[]} cost* @return {number}*/var minCostClimbingStairs = function(cost) {if (cost.length <= 2) return Math.min.apply(null, cost);let i = 2,len = cost.length,dp = cost.slice(0, 2);while (i < len) {dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];++i;}return Math.min(dp[len - 1], dp[len - 2]);};
