买卖股票的最好时机,有冷却时间(309)

2018-03-06  本文已影响0人  拔丝圣代

题目


给一个数组代表每天的股价,求获益最大为多少。
限制

思路


又是一个典型的动态规划问题。分两种状态:

状态转移如下:

最后求得sell[n]即为所求。

代码


class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        if len(prices) < 2:
            return 0
        sell = [0] * len(prices)
        buy = [-prices[0]] * len(prices)
        for i in range(1, len(prices)):
            buy[i] = max(buy[i-1], sell[i-2] - prices[i])
            sell[i] = max(sell[i-1], buy[i-1] + prices[i])
        return sell[len(prices)-1]
上一篇下一篇

猜你喜欢

热点阅读