使用最小花費爬樓梯
動態規劃問題,在爬樓梯的基礎上增加了權值,所以這裡面計算的最小路徑,而不是路徑的條數,整體思路還是一樣。
設樓梯的階數為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]