746. 使用最小花費爬樓梯 ( dp )

lankerens發表於2020-12-21

LeetCode:746. 使用最小花費爬樓梯

在這裡插入圖片描述


這題不會是 貪心


dp 題, 方向對了,公式也可以說對了, 但是最後上樓頂那個邊界好像不好判斷,樣例都過不了。

經過評論區提醒

思路:

在首尾都加一個0

分別代表地面,和樓頂

初始化: d p [ 1 ] = a r r [ 1 ] dp[1] = arr[1] dp[1]=arr[1]

轉移方程: d p [ i ] = M a t h . m i n ( d p [ i − 1 ] + a r r [ i ] , d p [ i − 2 ] + a r r [ i ] ) dp[i] = Math.min(dp[i - 1] + arr[i], dp[i -2] + arr[i]) dp[i]=Math.min(dp[i1]+arr[i],dp[i2]+arr[i])



AC Code

class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int len = cost.length;
        int[] dp = new int[len + 2];
        int[] arr = new int[len + 2];
        for(int i = 0; i < len; i++) arr[i + 1] = cost[i];
        dp[1] = arr[1]; 
        for(int i = 2; i < len + 2; i++){
            dp[i] = Math.min(dp[i - 1] + arr[i], dp[i - 2] + arr[i]);
        }

        //System.out.println(Arrays.toString(dp));

        return dp[len + 1];
    } 
}



相關文章