题解 | #最小花费爬楼梯#

最小花费爬楼梯

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]   
}

全部评论

相关推荐

未知的命运:大佬这都找不到我还找啥啊
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务