leetcode 746 使用最小花費爬樓梯

2021-10-12 12:39:18 字數 1361 閱讀 7686

陣列的每個索引作為乙個階梯,第 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 的元素作為初...