解法一:动态规划

一个简单的动态规划问题。 dp[i] 表示到达第 i 层的花费, len 表示总层数。
746. 使用最小花费爬楼梯 - 图1

  1. import java.util.Arrays;
  2. class Solution {
  3. public int minCostClimbingStairs(int[] cost) {
  4. int len = cost.length;
  5. int[] dp = new int[len];
  6. Arrays.fill(dp, 0x3f3f3f3f);
  7. dp[0] = cost[0];
  8. dp[1] = cost[1];
  9. for (int i = 2; i < len; ++i) {
  10. dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];
  11. }
  12. return Math.min(dp[len - 1], dp[len - 2]);
  13. }
  14. }