描述
給定一個整數(shù)數(shù)組 cost其爵,其中cost[i] 是從樓梯第i 個臺階向上爬需要支付的費用强胰,下標從0開始迅箩。一旦你支付此費用侨歉,即可選擇向上爬一個或者兩個臺階屋摇。
你可以選擇從下標為 0 或下標為 1 的臺階開始爬樓梯。
請你計算并返回達到樓梯頂部的最低花費幽邓。
解題思路:
每次到一個臺階炮温,只有兩種情況,要么是它前一級臺階向上一步颊艳,要么是它前兩級的臺階向上兩步茅特,因為在前面的臺階花費我們都得到了,因此每次更新最小值即可棋枕,轉(zhuǎn)移方程為:
dp[i]=min(dp[i?1]+cost[i?1],dp[i?2]+cost[i?2])白修。
其中dp[0] dp[1] = 0;
import java.util.*;
public class Solution {
/**
* 代碼中的類名、方法名重斑、參數(shù)名已經(jīng)指定兵睛,請勿修改,直接返回方法規(guī)定的值即可
*
*
* @param cost int整型一維數(shù)組
* @return int整型
*/
public int minCostClimbingStairs (int[] cost) {
// write code here
int[] dp = new int[cost.length+1];
for(int i = 2;i<=cost.length;i++){
dp[i] = Math.min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]);
}
return dp[cost.length];
}
}