vivo 笔试题(唯一一道编程题)
1. 输入:一个非负整数数组cost,cost[i] 为对应位置的花费,从第一个或第二个位置开始,一次可以跳一步或两步,
输出:求跳出数组的总花费最小的路径,若有多条输出其中一条即可
```
def f(cost):
"""
:type cost: list
:rtype: list
"""
path = [None] * len(cost)
dp = [None] * len(cost)
path[0], path[1] = [0], [1]
dp[0], dp[1] = cost[0], cost[1]
for i in range(2, len(cost)):
if dp[i-2] < dp[i-1]:
path[i] = path[i-2] + [i]
dp[i] = dp[i-2] + cost[i]
else:
path[i] = path[i-1] + [i]
dp[i] = dp[i-1] + cost[i]
if dp[-1] < dp[-2]:
return path[-1]
else:
return path[-2] 结束后才写出来的,请同学们看下有问题没,自己写出dp的题,好开心(^▽^)
#vivo##笔试题目##笔经#
查看19道真题和解析