leetcode 746. 使用最小花費爬樓梯
陣列的每個索引做為一個階梯,第 i
個階梯對應著一個非負數的體力花費值 cost[i]
(索引從0開始)。
每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。
您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。
示例 1:
輸入: cost = [10, 15, 20] 輸出: 15 解釋: 最低花費是從cost[1]開始,然後走兩步即可到階梯頂,一共花費15。
示例 2:
輸入: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1] 輸出: 6 解釋: 最低花費方式是從cost[0]開始,逐個經過那些1,跳過cost[3],一共花費6。
注意:
cost
的長度將會在[2, 1000]
。- 每一個
cost[i]
將會是一個Integer型別,範圍為[0, 999]
。
這道題是一道動態規劃題,我們可以從題目中得到的資訊是每一次可以走一步或者兩步,但是走一步或者兩步的花費都是相同的,由此可以得到遞迴式如下:
dp[0] = cost[0]
dp[1] = cost[1]
dp[n] = min (dp[n-1] , dp[n-2]) + cost[i]
最後輸出min(dp[size-1] , dp[size-2]) ,因為最後可以是一步上去的也可以是兩步上去的
class Solution { public: int minCostClimbingStairs(vector<int>& cost) { //遞推式為 dp[n] = min(dp[n-1], dp[n-2]) + cost[n] int size = cost.size(); //獲取樓梯的層數 int dp[size] = {0}; //記錄每一級臺階的最低花費 if(size == 2){ //如果樓梯層數在2層的時候,返回較小的那個 if(cost[0] < cost[1]) return cost[0]; else return cost[1]; } dp[0] = cost[0]; dp[1] = cost[1]; for(int i=2;i<size;i++){ if(dp[i-2] < dp[i-1]) dp[i] = dp[i-2] + cost[i]; else dp[i] = dp[i-1] + cost[i]; } if(dp[size-1] < dp[size-2]) return dp[size-1]; else return dp[size-2]; } };
相關推薦
LeetCode 746最小代價爬樓梯
題目: 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i]索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為
Leetcode-------使用最小花費爬樓梯
746. 使用最小花費爬樓梯 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始
leetcode 746. 使用最小花費爬樓梯(python)
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1
[LeetCode]746. 使用最小花費爬樓梯(Min Cost Climbing Stairs)
一、題目: LeetCode地址 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在
28.動態規劃-使用最小花費爬樓梯-Leetcode 746(python)
題目描述 陣列的每個索引做為一個階梯,第 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 746. 使用最小花費爬樓梯(C++、python)
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1
leetcode-746. 使用最小花費爬樓梯
一、問題描述陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或
[LeetCode javaScript] 746. 使用最小花費爬樓梯
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 costi。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。 示例
leetcode 746. 使用最小花費爬樓梯
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1
使用最小花費爬樓梯 (LeetCode
描述 你需要爬上一個N層的樓梯,在爬樓梯過程中,每階樓梯需花費非負代價,第i階樓梯花費代價表示為cost[i],一旦你付出了代價,你可以在該階基礎上往上爬一階或兩階。你可以從第0階或者第1階開始,請找到到達頂層的最小的代價是多少 N和cost[i]皆為整數,且N∈[2
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]+
746使用最小花費爬樓梯
class Solution { public: int minCostClimbingStairs(vector<int>& cost) { //動態規劃,確定好狀態,dp[i]表示跳到i階花的代價 //所
使用最小花費爬樓梯dp
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。
Leetcode746.Min Cost Climbing Stairs使用最小花費爬樓梯
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或
leetcode746. 使用最小花費爬樓梯 動態規劃簡單題 python3
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從
leetcode746_使用最小花費爬樓梯
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作
LeetCode746題:使用最小花費爬樓梯
思路: 這題與LeetCode198題“打家劫舍”屬於相同題型,都涉及到動態規劃的思想。 對於第i階樓梯來說,有兩種情況,要麼走第i階樓梯,要麼直接跨過第i階樓梯。而最終要求從1階登過i階的最小總花費cost(i)就可以用下面的公式表示: cost(i) = min
LeetCode746. 使用最小花費爬樓梯
陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1
使用最小花費爬樓梯(Min Cost Climbing Stairs) Java動態規劃入門分析一
前言 題幹 陣列的每個索引做為一個階梯,第 i個階梯對應著一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需要找到達到樓層頂部的最低花費。