题解 | #买卖股票的最好时机(二)# Py3 + 简单解释

买卖股票的最好时机(二)

https://www.nowcoder.com/practice/fbc5dad3e215457fb82a3ae688eb7281

import sys

# 对于每天来说,每天可能有三种可操作状态,可买入,可卖出,和不操作三种选择
# 假设当天可买入状态下,从第一台呢到第i天能收获的最高利润是 buy[i]
# 当天可卖出状态下能收获的最高利润是 sell[i]
# 不操作的话收益和 0~i之间某一天的买入或者卖出一样,无需专门记录
# 因此
# buy[i] = max(sell[i-1] - prices[i], buy[i-1])
# sell[i] = max(buy[i-1] + prices[i], sell[i-1]
# 最后能max(buy[i],sell[i]) 即可

n = int(input())
if n <= 1:
    print(0)
else:
    prices = list(map(int,input().strip().split(' ')))
    sell = [0] * (n+1)
    buy = [0] * (n+1)
    buy[0] = - prices[0] #第一天不可卖出,因此让第一天的卖出值为0
    for i in range(1,n+1):
        buy[i] = max(sell[i-1] - prices[i-1], buy[i-1])
        sell[i] = max(buy[i-1] + prices[i-1], sell[i-1])

    max_profit = max(buy[-1],sell[-1])
    if max_profit <= 0:
        print(0)
    else:
        print(max_profit)

全部评论

相关推荐

10-04 17:25
门头沟学院 Java
snqing:Java已经饱和了,根本不缺人。随便一个2000工资的都200人起投递
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务