leetCode 746 使用最小花費爬樓梯

2021-10-12 12:37:14 字數 998 閱讀 2737

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