陣列的每個索引做為乙個階梯,第i
個階梯對應著乙個非負數的體力花費值cost[i]
(索引從0開始)。每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部(不是只到最後乙個階梯就行)的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。
輸入: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
輸出: 6
解釋: 最低花費方式是從cost[0]開始,逐個經過那些1,跳過cost[3],一共花費6。
重要的是理解題意,簡單動態規劃:dp[i] = min(dp[i-1], dp[i-2]) + cost[i]
。
動態規劃
class
solution
return
min(dp[length-1]
, dp[length-2]
);}}
;// 或者(思路同上)
class
solution
; dp[0]
= cost[0]
, dp[1]
= cost[1]
;for
(int i =
2; i < length; i++
)return dp[length-1]
;}};
空間複雜度還可以繼續優化到o(1),這裡暫略。 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 的元素作為初始階梯。dp i 定義為 到...