给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
思路:一旦第i+1次股票会涨,第i次就买上,然后i+1次卖掉;判断和i+1次相比,i+2次是否会涨,若会涨,则接着买上i+1次;最后一次特殊处理一下。
class Solution:
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
sale=0;
buy=0;
flag=0; # 1 buy 0 sale
profit=0;
i=0;
for i in range(len(prices)-1):
if (flag==1):
sale = prices[i];
flag=0;
profit = profit +(sale-buy);
if (flag==0)&(prices[i]<prices[i+1]):
buy=prices[i];
flag=1;
i = len(prices)-1
if (flag == 1):
sale = prices[i];
profit = profit +(sale-buy);
return profit