leetcode 746. 使用最小花费爬楼梯

题目:

数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。

每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。

您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。

分析:

这个题我提交了三次...主要是审题并不严谨,过程很简单,就是基本的动态规划。大家可以去做做,有坑的。

代码:

 1 //3ms 100% 动态规划
 2 class Solution {
 3     public int minCostClimbingStairs(int[] cost) {
 4         if(cost.length<1)
 5             return 0;
 6         if(cost.length<2)
 7             return cost[0];
 8         int len=cost.length;
 9         int[] min=new int[len+1];
10         min[0]=cost[0];
11         min[1]=cost[1];
12         for(int n=2;n<len;++n) 
13             if(min[n-1]>min[n-2])
14                 min[n]=min[n-2]+cost[n];
15             else
16                 min[n]=min[n-1]+cost[n];
17         min[len]=min[len-1]>min[len-2]?min[len-2]:min[len-1];
18         return min[len];
19     }
20 }

 

posted @ 2019-04-04 21:10  你说你好  阅读(115)  评论(0编辑  收藏  举报