动态规划
- 创建辅助数组
int[] dp = new int[len+1]; //爬到第i层所需要的最小费用是dp[i]
- 找到对应关系
// 一旦你支付此费用,即可选择向上爬一个或者两个台阶。
dp[i] = Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
// 到当前层所花费的费用 + 当前层的费用 = 向上爬的费用
- 初始化
// 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
dp[0] = dp[1] = 0;
int[] dp = new int[len+1]; //爬到第i层所需要的最小费用是dp[i]
// 一旦你支付此费用,即可选择向上爬一个或者两个台阶。
dp[i] = Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
// 到当前层所花费的费用 + 当前层的费用 = 向上爬的费用
// 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
dp[0] = dp[1] = 0;