|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
今天的题目:
假设你正在爬楼梯。给定数组 cost,数组的每个索引做为一个阶梯,第 n 个阶梯对应着一个非负数的体力值 cost[n]。
每当爬上一个阶梯都要花费对应的体力值,然后你可以选择继续爬一个阶梯或者两个。
找到达到楼层顶部的最低体力花费。
在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。
示例 1:
输入:cost = [10, 15, 20]
输出:15
解释:从 cost[1] 开始,走两步即可到阶梯顶,一共花费 15 点体力值。 示例 2:
输入:cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1]
输出:6
解释:从 cost[0] 开始,逐个经过那些 1(跳过 cost[3]),一共花费 6 点体力值。
 欢迎大家一起答题! 
本帖最后由 TJBEST 于 2020-4-11 22:08 编辑
最简单的方法,利用递推式进行循环迭代,比dp快
- def fun373(cost):
- #思想 倒序 f(n) = min(f(n+1),f(n+2))+a(n)
- M = len(cost)
- if M == 1:
- return cost[0]
- elif M == 2:
- return min(cost[0],cost[1])
- a = cost[-2]
- b = cost[-1]
- for index in range(M - 3,-1,-1):
- a,b = min(a,b)+cost[index],a
- return min(a,b)
复制代码
|
|