1. 程式人生 > >使用最小花費爬樓梯

使用最小花費爬樓梯

動態規劃問題,在爬樓梯的基礎上增加了權值,所以這裡面計算的最小路徑,而不是路徑的條數,整體思路還是一樣。

設樓梯的階數為n,也就是cost的長度,T用來儲存到達每一階臺階的花費,那麼從1~n-1階的範圍內,可以得出狀態轉移方程:

 T[i] = MIN(cost[i] + T[i - 1], cost[i] + T[i - 2])

當到達第n階的時候就需要分情況討論了:

  • 從倒數第二個臺階,直接走兩步,因為只剩一個臺階了,所以總的花費就是到達n-1階的花費。
  • 從倒數第三個臺階,走兩步到達最後一個臺階,此時總的花費為到達n-2階的花費加上最後一階的花費。

所以此時狀態轉移方程為:
T[i] = MIN(T[i - 1],T[i-2] + cost[i]);

程式碼:

class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int n = cost.length;
        if (n < 2){
            return cost[0];
        }
        int[] T = new int[n];
        T[0] = cost[0];
        T[1] = Math.min(cost[1],cost[0]+cost[1]);
        for (int i = 2; i < n; i++){
            if (i + 1 == n){
                //最後一個臺階
                //1.從倒數第二個直接上來
                //2.從倒數第三個上來
                T[i] = Math.min(T[i - 1],T[i-2] + cost[i]);
            }else {
                T[i] = Math.min(cost[i] + T[i - 1], cost[i] + T[i - 2]);
            }
        }
        return T[n-1];
    }
}

相關推薦

使用花費樓梯dp

陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。

leetcode 746. 使用花費樓梯(python)

陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1

Leetcode746.Min Cost Climbing Stairs使用花費樓梯

陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或

[LeetCode]746. 使用花費樓梯(Min Cost Climbing Stairs)

一、題目: LeetCode地址​​​​​​​ 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在

28.動態規劃-使用花費樓梯-Leetcode 746(python)

題目描述 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選

leetcode746. 使用花費樓梯 動態規劃簡單題 python3

          陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從

leetcode 746:使用花費樓梯

定義一個數組用來儲存最小的體力花費值,當前階梯i值的最小的體力花費值當前的階梯i當前的體力值+第i-1的最小體力值,第i-2的最小體力值的較小的一個 d[i]=std::min(d[i-1]+cost[i],d[i-2]+cost[i]); int minCostClimbingSta

使用花費樓梯 (LeetCode

描述 你需要爬上一個N層的樓梯,在爬樓梯過程中,每階樓梯需花費非負代價,第i階樓梯花費代價表示為cost[i],一旦你付出了代價,你可以在該階基礎上往上爬一階或兩階。你可以從第0階或者第1階開始,請找到到達頂層的最小的代價是多少 N和cost[i]皆為整數,且N∈[2

LeetCode 746. 使用花費樓梯(C++、python)

陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1

leetcode746_使用花費樓梯

 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作

LeetCode746題:使用花費樓梯

思路:  這題與LeetCode198題“打家劫舍”屬於相同題型,都涉及到動態規劃的思想。 對於第i階樓梯來說,有兩種情況,要麼走第i階樓梯,要麼直接跨過第i階樓梯。而最終要求從1階登過i階的最小總花費cost(i)就可以用下面的公式表示: cost(i) = min

LeetCode Problem 使用花費樓梯 Python

爬到索引為i的樓梯(第一層索引為0)的最小花費r[i]=min(r[i-1] + cost[i-1], r[i-2] + cost[i-2]), 確定了狀態轉移方程。但是注意r[i]定義為爬到第i層,並沒有爬完整個樓梯,所以最後返回值並不是r[-1],而是min(r[-1]+

LeetCode746. 使用花費樓梯

陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1

使用花費樓梯(Min Cost Climbing Stairs) Java動態規劃入門分析一

前言 題幹 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。

leetcode-746. 使用花費樓梯

一、問題描述陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或

使用花費樓梯python

題目描述:陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1

Leetcode-------使用花費樓梯

746. 使用最小花費爬樓梯 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始

LeetCode746. 使用花費樓梯(Python)

陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1

[LeetCode javaScript] 746. 使用花費樓梯

陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 costi。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。 示例

使用花費樓梯

動態規劃問題,在爬樓梯的基礎上增加了權值,所以這裡面計算的最小路徑,而不是路徑的條數,整體思路還是一樣。 設樓梯的階數為n,也就是cost的長度,T用來儲存到達每一階臺階的花費,那麼從1~n-1階的範圍內,可以得出狀態轉移方程:  T[i] = MIN(cost[i]