Update 0746.使用最小花费爬楼梯.md

This commit is contained in:
fw_qaq
2023-04-13 13:34:46 +08:00
committed by GitHub
parent ac16522a48
commit 057d6b8f89

View File

@ -399,18 +399,29 @@ impl Solution {
### C ### C
```c ```c
int minCostClimbingStairs(int* cost, int costSize){ #include <math.h>
//开辟dp数组大小为costSize int minCostClimbingStairs(int *cost, int costSize) {
int *dp = (int *)malloc(sizeof(int) * costSize); int dp[costSize + 1];
//初始化dp[0] = cost[0], dp[1] = cost[1] dp[0] = dp[1] = 0;
dp[0] = cost[0], dp[1] = cost[1]; for (int i = 2; i <= costSize; i++) {
dp[i] = fmin(dp[i - 2] + cost[i - 2], dp[i - 1] + cost[i - 1]);
}
return dp[costSize];
}
```
int i; 不使用 dp 数组
for(i = 2; i < costSize; ++i) {
dp[i] = (dp[i-1] < dp[i-2] ? dp[i-1] : dp[i-2]) + cost[i]; ```c
} #include <math.h>
//选出倒数2层楼梯中较小的 int minCostClimbingStairs(int *cost, int costSize) {
return dp[i-1] < dp[i-2] ? dp[i-1] : dp[i-2]; int dpBefore = 0, dpAfter = 0;
for (int i = 2; i <= costSize; i++) {
int dpi = fmin(dpBefore + cost[i - 2], dpAfter + cost[i - 1]);
dpBefore = dpAfter;
dpAfter = dpi;
}
return dpAfter;
} }
``` ```