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

最小花费爬楼梯

https://www.nowcoder.com/practice/6fe0302a058a4e4a834ee44af88435c7

package main


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param cost int整型一维数组
 * @return int整型
 */
func minCostClimbingStairs(cost []int) int {
	// write code here
	//采用动态规划:自下而上的方式计算值
	//计算爬上最上面的成本
	n := len(cost)
	if n == 1 {
		return cost[0]
	}
	if n == 2 {
		if cost[0] < cost[1] {
			return cost[0]
		}
		return cost[1]
	}
	//a,b,c分别表示到达所在位置需要的成本
	var (
		a = 0
		b = 0
		c = 0
	)
	//动态规划往上走
	for i := 2; i <= n; i++ {
		t1 := a + cost[i-2]
		t2 := b + cost[i-1]
		if t1 > t2 {
			c = t2
		} else {
			c = t1
		}
		a = b
		b = c
	}
	return c
}

全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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