121. Best Time to Buy and Sell Stock

题目描述

给一个数组prices[],prices[i]代表股票在第i天的售价,求出只做一次交易(一次买入和卖出)能得到的最大收益。

我的解法——DP

  • prices[i]代表第i天卖、第i天之前的某一天买的话,获得的最大收益。
  • 即固定“卖”来找“买”,本质上是双指针思路
  • n的复杂度。
  • 结果:beat 70.15%
class Solution(object):
    def maxProfit(self, prices):
        """
        :type prices: List[int]
        :rtype: int
        """
        if(len(prices) == 0):
            return 0
        smallest = prices[0]
        res = 0
        for i in range(len(prices)):
            if(prices[i] < smallest):
                smallest = prices[i]
            prices[i] = prices[i] - smallest
            if(prices[i] > res):  # 一边循环,避免循环两遍
                res = prices[i]

        return res

参考答案

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/solution/