题解 | #买卖股票的最好时机#

买卖股票的最好时机

http://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec

按照动态规划的思路分解问题。
令dp[i]为以第i天为卖出点的最大收益,而不去管是从哪天开始买入得。
那么dp[i+1]=dp[i] + p[i+1], 其中p[i+1] 为第i+1天的收入。不过这有个前提就是dp[i+1]>=0, 最大收益不能为负,因为可以当天买卖收益为0.

#
# 
# @param prices int整型一维数组 
# @return int整型
#
class Solution:
    def maxProfit(self , prices ):
        # write code here
        n = len(prices)
        if n<=1:
            return 0
        dplast = 0    #上一天为卖出点的最大收益值
        maxp = dplast    #最大收益指
        for i in range(1, n):    #从第二天开始遍历
            p = prices[i]-prices[i-1]    #当前天相比前一天的收益值
            if dplast+p > 0:    #前一天为卖出点的最大收益加上今天的收益指,即为以今天为卖出点的最大收益,dp[i] = dp[i] + p[i] 
                dplast += p
            else:                #不过收益指不能小于0,因为最差情况就是当天买卖,收益为0。
                dplast = 0
            maxp = max(maxp, dplast)
        return maxp
全部评论

相关推荐

LZStarV:冲就好了,就算真的是字节也冲,面评脏了大不了等三四个月就淡了,而且等到那个时候实力进步了选择还多,何必拘泥于字节
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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