letcode 746 使用最小花費爬樓梯

2021-09-11 23:31:35 字數 1317 閱讀 3813

題目

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