746.以最小的成本爬楼梯。
数组的每个下标作为一个阶梯,第I个阶梯对应一个非负的物理代价值cost[i](下标从0开始)。
每次爬梯子,都要花相应的体力值。一旦付出相应的体力值,可以选择爬一梯或两梯。
请找出到达顶层的最低费用。开始时,可以选择下标为0或1的元素作为初始阶梯。
例1:
输入:成本=[10,15,20]。
输出:15。
说明:最低成本是从成本[1]开始,然后走两步到达阶梯顶端,总成本15。
例2:
输入:成本=[1,100,1,1,1,100,1,1,1,100,1,1,100,1]。
产出:6。
说明:最低成本法是从成本[0]开始,把那些一个一个传过去,跳过成本[3],一共花6。
私有int流程(int[]成本){ 0
//dp[i]的定义:达到第I步的最小体力为DP[I]。(请注意,这里被认为是第一步的工作一定很昂贵。)
int n=cost.length
int[]DP=new int[n];
DP[0]=成本[0];
DP[1]=成本[1];
for(int I=2;在;I){ 0
//得到dp[i]有两种方法,一种是dp[i-1],另一种是dp[i-2]。
//那么应该选择dp[i-1]还是dp[i-2]呢?
//必须选择最小的,所以DP [I]=min (DP [I-1],DP [I-2])成本[I];
DP[I]=成本[i] Math.min(dp[i-1],DP[I-2]);
}
//注意最后一步可以理解为没有成本,所以取最后一步和第二步的最低值。
返回Math.min(dp[n-1],DP[n-2]);
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/48872.html