陣列的每個索引作為乙個階梯,第 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]。
class
solution
:def
mincostclimbingstairs
(self, cost:
list)-
>
int:
dp =[0
for _ in
range
(len
(cost)+1
)]for i in
range(2
,len
(cost)+1
):dp[i]
=min
(dp[i -1]
+ cost[i -1]
, dp[i -2]
+ cost[i -2]
)return dp[-1
]if __name__ ==
'__main__'
: cost =[1
,100,1
,1,1
,100,1
,1,100,1
] s = solution(
) ans = s.mincostclimbingstairs(cost)
print
(ans)
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 的元素作為初...