题解 | #买卖股票的最好时机(三)# Python3+解释

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

https://www.nowcoder.com/practice/2fea2b0349df4f7689f6f5a882e4f129

import sys

# 卖出之前没法买入,
# 假设第一次卖出是在第i天
# 那么就是寻找 0~i天 和i到n天两段时间内的最大收益
# 因此两个动态规划
# dp1 从 0到 i 表示 到第i天的最大收益
# dp2 从 i到n 表示 i~n天的最大收益

n = int(input())
if n <= 1:
    print(0)
else:
    prices = list(map(int,input().strip().split(' ')))
    dp1 = [0] * n
    dp2 = [0] * n
    pre_min = prices[0]
    for i in range(1,n):
        dp1[i] = max(dp1[i-1],prices[i]-pre_min)
        pre_min = min(prices[i],pre_min)

    pre_high = prices[-1]
    for j in range(n-2,-1,-1):
        dp2[j] = max(dp2[j+1],pre_high - prices[j])
        pre_high = max(pre_high, prices[j])
        
    res = [v1+v2 for v1,v2 in zip(dp1,dp2)]
    max_profit = max(res)
    if max_profit <=0:
        print(0)
    else:
        print(max_profit)


全部评论

相关推荐

10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
牛客618272644号:佬携程工作怎么样,强度大吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务