陣列的每個下標作為乙個階梯,第 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 。
這道題需要注意的是只有經過某一階,並從這一階爬上其他階的時候花費才存在,並且所花費的體力是該階的體力值。由於初始階梯可以是0階,也可以是一階,那麼在0階和1階的體力花費都是0。往後的階梯(i階)花費應是選擇經過i-1階還是i-2階所產生的體力值。經過i-1階到達i階的花費值應為到達i-1階的最小花費加上i-1階的體力,而經過i-2階到達i階的花費應是到達i-2階的最小花費加上i-2階本身的花費。
int
mincostclimbingstairs
(int
* cost,
int costsize)
return dp[costsize]
;}
使用最小花費爬樓梯
陣列的每個索引做為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 cost i 索引從0開始 每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。示例 1 輸入 ...
使用最小花費爬樓梯
力扣第746題 本題為 動態規劃題 首先我們可以先建立乙個新的陣列 與原陣列長度相同 為保證體力值消耗最小,因此我們應取最小值。建立乙個新陣列,保證與原陣列長度相同 int arr new int cost.length 接著我們分析題,每次走一步或者兩步,因此保證前兩項數值不變,從索引2開始依次對...
使用最小花費爬樓梯
使用最小花費爬樓梯 陣列的每個索引作為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 cost i 索引從0開始 每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階...