题目:746. 使用最小花费爬楼梯
思路:动态规划dp,时间复杂度0(n)。
C++版本:
class Solution {
public:
int minCostClimbingStairs(vector<int>& cost) {
int n=cost.size();
vector<int> f(n+5,INT_MAX);
f[0]=0,f[1]=0;
for(int i=2;i<=n;i++){
f[i]=min(f[i-1]+cost[i-1],f[i-2]+cost[i-2]);
}
return f[n];
}
};
JAVA版本:
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n=cost.length;
int[] f=new int[n+5];
Arrays.fill(f,Integer.MAX_VALUE);
f[0]=0;
f[1]=0;
for(int i=2;i<=n;i++){
f[i]=Math.min(f[i-1]+cost[i-1],f[i-2]+cost[i-2]);
}
return f[n];
}
}
Go版本:
func minCostClimbingStairs(cost []int) int {
n:=len(cost)
f:=make([]int,n+5)
f[0]=0
f[1]=0
for i:=2;i<=n;i++ {
f[i]=min(f[i-2]+cost[i-2],f[i-1]+cost[i-1])
}
return f[n]
}