题解 | #最小花费爬楼梯#
最小花费爬楼梯
https://www.nowcoder.com/practice/6fe0302a058a4e4a834ee44af88435c7
package main
import "math"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * @param cost int整型一维数组
 * @return int整型
 */
func minCostClimbingStairs( cost []int ) int {
    // write code here
    res := make([]int,len(cost))
  	//跨越编号0台阶需要的代价
    res[0] = cost[0]
  	//跨越编号1台阶需要的代价:从0号走两步,或者从1号走一步
    if len(cost)>=1{
        res[1] = int(math.Min(float64(cost[1]), float64(cost[0])))
    }
  	//跨越编号2台阶需要的代价:从0号出发,或从1号出发
    if len(cost)>=3{
        res[2] = int(math.Min(float64(res[0]+cost[2]), float64(cost[1])))
    }
  	//跨越编号i需要的代价:当前在i号台阶(已付出代价是跨越了i-1),或者当前是i-1号台阶(已付出代价是跨越了i-2)
    if len(cost)>=4{
        for i:=3;i<len(cost);i++{
            res[i] = int(math.Min(float64(cost[i]+res[i-1]),float64(cost[i-1]+res[i-2])))
        }
    }
    return res[len(cost)-1]   
}
查看7道真题和解析