Python--买卖股票最佳时机

Python--买卖股票最佳时机_第1张图片

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        """
            基本思路:遇低看最低则买,遇高看最高则卖
        """
        # 返回的最大利润
        max_profit = 0
        # 买入的列表
        buyin = []
        # 买入的列表
        saleout = []
        # 循环初始值
        j = 0
        if len(prices) < 2:
            return max_profit
        while j < len(prices):
            # 买入
            if len(buyin) <= len(saleout) :
                # 判断是否是最后一个元素
                if  j >= len(prices)-1 and prices[j] <= prices[j-1]:
                    break
                # 不是是最后一个元素,最低的买入
                elif prices[j] < prices[j+1]  :
                    buyin.append(prices[j])
                    j = j + 1
                elif prices[j] >= prices[j+1] :
                    j = j + 1
            # 卖出
            elif len(buyin) > len(saleout):
                # 判断是否是最后一个元素
                if  j >= len(prices)-1 and prices[j] >= prices[j-1]:
                    saleout.append(prices[j])
                    break
                # 不是是最后一个元素,最高的卖出
                elif prices[j] > prices[j+1] :
                    saleout.append(prices[j])
                    j = j + 1
                elif prices[j] <= prices[j+1]:
                    j = j + 1
        # 计算最后结果
        max_profit = sum([saleout[i] - buyin[i] for i in range(len(saleout))])
        return max_profit

你可能感兴趣的:(Python)