150. 买卖股票的最佳时机 II

150. 买卖股票的最佳时机 II

中文English

给定一个数组 prices 表示一支股票每天的价格.

你可以完成任意次数的交易, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购买之前, 你必须先卖掉它).

设计一个算法求出最大的利润.

样例

样例 1:

输入: [2, 1, 2, 0, 1]
输出: 2
解释: 
    1. 在第 2 天以 1 的价格买入, 然后在第 3 天以 2 的价格卖出, 利润 1
    2. 在第 4 天以 0 的价格买入, 然后在第 5 天以 1 的价格卖出, 利润 1
    总利润 2.

样例 2:

输入: [4, 3, 2, 1]
输出: 0
解释: 不进行任何交易, 利润为0.
输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param prices: Given an integer array
    @return: Maximum profit
    """
    '''
    大致思路:
    1.如果下一个价格低于当前价格,则卖出,直到结束,返回
    '''
    def maxProfit(self, prices):
        if prices == []:
            return 0
        total = 0
        isSell = True
        prices.append(min(prices)-1)
        for i in range(len(prices)-1):
            if prices[i] < prices[i+1]:
                if isSell == True:
                    buy_price = prices[i]
                    isSell = False
                
            else:
                if isSell == False:
                    sell_price = prices[i]
                    total += sell_price - buy_price
                    isSell = True
        return total

 

posted @ 2020-05-05 20:18  风不再来  阅读(111)  评论(0编辑  收藏  举报