Treppensteigen mit minimalen Kosten [Dynamische Programmierung]

  1. Erklimmen Sie die Treppe mit minimalen Kosten.
    Sie erhalten ein ganzzahliges Array mit Kosten, wobei cost[i] die Kosten für das Erklimmen der i-ten Stufe der Treppe sind. Sobald Sie diese Gebühr bezahlt haben, haben Sie die Möglichkeit, eine oder zwei Stufen hinaufzusteigen.
    Sie können wählen, ob Sie mit dem Treppensteigen ab der Stufe mit Index 0 oder Index 1 beginnen möchten.
    Bitte berechnen und erstatten Sie die Mindestkosten, um das obere Ende der Treppe zu erreichen.
class Solution {
    
    //注意边界处理
    public int minCostClimbingStairs(int[] cost) {
    
    
        int[] dp = new int[cost.length + 1];//初始化需要多一个包含楼顶的位置,代表索引0到n,而不是0到n-1
        dp[0] = 0;
        dp[1] = 0;
        for (int i = 2; i <= cost.length; i++) {
    
    
            dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);//每一步,只能由前两步递进得到; 同时需要取最小的花费
        }
        return dp[cost.length];//cost.length代表楼顶,cost.length - 1代表最后一个台阶
    }
}

Guess you like

Origin blog.csdn.net/weixin_47004707/article/details/132646805