题目:
给你一个整数数组 cost
,其中 cost[i]
是从楼梯第 i
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0
或下标为 1
的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
思路:回溯 -> 记忆化搜索 -> 递推 -> 空间优化
代码:
public class Solution {public int minCostClimbingStairs(int[] cost) {int f0 = 0, f1 = 0;for (int i = 1; i < cost.length; i++) {int newF = Math.min(f1 + cost[i], f0 + cost[i - 1]);f0 = f1;f1 = newF;}return f1;}
}
性能:时间复杂度O(n) 空间复杂度O(1)