陣列的每個索引作為乙個階梯,第i
個階梯對應著乙個非負數的體力花費值cost[i]
(索引從0開始)。
每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。
您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。
dp[i]定義為: 到達第i個台階所需要花費的體力值則狀態轉移方程為:
math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
最終答案為dp[n];
如果最後爬了1階台階到第i階則dp[i] = dp[i - 1] + cost[i-1]
如果最後爬了2階台階到第i階則dp[i] = dp[i - 2] + cost[i - 2]
狀態轉移方程就是這兩種情況取最小值
class
solution
return dp[n];}
}
狀態壓縮
:
class
solution
return prev1;
}}
dp[i]如果定義為:爬完第i階台階所需要花費的最小值。
爬第i階台階有兩種情況:1.爬了1階到達第i階;2.爬了2階到達第i階
所以狀態轉移方程為 dp[i] = min(dp[i-1], dp[i-2]) + cost[i]
所以最後的答案為:min(dp[n - 1], dp[n - 2]);
class
solution
return math.
min(dp[n -1]
, dp[n -2]
);}}
LeetCode 746 使用最小花費爬樓梯
陣列的每個索引做為乙個階梯,第i個階梯對應著乙個非負數的體力花費值cost i 索引從0開始 每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。示例 1 輸入 co...
LeetCode746 使用最小花費爬樓梯
陣列的每個索引做為乙個階梯,第i個階梯對應著乙個非負數的體力花費值cost i 索引從0開始 每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。示例 1 輸入 co...
LeetCode 746 使用最小花費爬樓梯
陣列的每個索引做為乙個階梯,第i個階梯對應著乙個非負數的體力花費值cost i 索引從0開始 每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部 不是只到最後乙個階梯就行 的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初...