题目链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/
代码
class Solution:
def maxProfit(self, prices) -> int:
if len(prices)<1: return 0
profit=0
min_prices=float('inf')
flag=0
for i in range(1,len(prices)):
if prices[i]<prices[i-1] and flag==0:
continue
elif flag==0:
min_prices=prices[i-1]
flag=1
if flag==1 and prices[i]<prices[i-1]:
profit+=prices[i-1]-min_prices
i=i-1
flag=0
if flag==1 and min_prices != float('inf'):
profit+=prices[-1]-min_prices
return profit
solution=Solution()
思路详解
采用贪心算法
- 首先找到下降的最低点,买入,flag标记为1
- 接着找出上升的最高点,卖出,flag标记为0
注意点:
- 买入后,需要回退
- 上升过程中,到结尾的时候需要判断是否还未卖出