- java
dp动态规划
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
int[] d = new int[n + 1];
d[0] = d[1] = 0;
for (int i = 2; i < n + 1; ++i) {
d[i] = Math.min(d[i - 1] + cost[i - 1], d[i - 2] + cost[i - 2]);
}
return d[n];
}
}
使用滚动数组将空间复杂度从O(n)降到O(1)
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
int pre = 0, cur = 0;
for (int i = 2; i < n + 1; ++i) {
int next = Math.min(cur + cost[i - 1], pre + cost[i - 2]);
pre = cur;
cur = next;
}
return cur;
}
}
注意数组的长度用.length
获取
String
的长度用.length()
获取