題目
陣列的每個索引做為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 cost[i] (索引從0開始)。
每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。
您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。
示例 1:
輸入: cost = [10, 15, 20]
輸出: 15
解釋: 最低花費是從cost[1]開始,然後走兩步即可到階梯頂,一共花費15。
思路對於此題,要計算出最小花費這種問題,還是動態規劃型別
假設走到 第n層的最小花費為 f(n),那麼有動態規劃方程:
f(n)=min(f(n-1),f(n-2))+cost[n] //因為每一層樓梯可以走一層,或者兩層
假設 對於 第三層 計算 其最小花費,則只用知道,f(1)與f(2)即可
f(4)同理,依次類推,只要將每一步都計算出,則然就能 清楚的得到 上樓頂所需要的 花費了
解答過程
/**
* */
/***
* @author 18071
* @date 2023年3月4日
* 功能:
* 陣列的每個索引做為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 cost[i](索引從0開始)。
每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。
您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。
輸入: cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
輸出: 6
解釋: 最低花費方式是從cost[0]開始,逐個經過那些1,跳過cost[3],一共花費6。
***/
public class test ;
solution s= new solution ();
system.out.println(s.mincostclimbingstairs(cost)); }
}//我的思路:
/* * 對於 每一步 ,要找出 其花費的最小體力 ,對於 不為邊界的 任何一階:
* costmin[i]=min(costmin[i-1],costmin(i-2))+curr;
* */
class solution
min[i] = math.min(min[i-2],min[i-1])+curr;
}return min[cost.length];
}}
746 使用最小花費爬樓梯
陣列的每個索引做為乙個階梯,第i個階梯對應著乙個非負數的體力花費值cost i 索引從0開始 每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。示例 1 輸入 co...
746 使用最小花費爬樓梯
陣列的每個索引做為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 costi。每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。示例 1 輸入 cost 10,...
C Leetcode746 使用最小花費爬樓梯
題目 陣列的每個索引做為乙個階梯,第 i個階梯對應著乙個非負數的體力花費值 costi。每當你爬上乙個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬乙個階梯或者爬兩個階梯。您需要找到達到樓層頂部的最低花費。在開始時,你可以選擇從索引為 0 或 1 的元素作為初始階梯。示例 1 輸入 cost ...