一次交易包含买入卖出2次操作
思路:
方法一:只要prices[i+1]>prices[i]就累加diff=prices[i+1]>prices[i],此法可以得到最大利润,无法得到最少交易数
法二:求出所有波峰波谷,累加波峰波谷的差值,可以得到最大利润和最少交易次数
def max_profit(prices):
n=len(prices)
if n<2:return 0,0
profit=0
count=0
i=0
while i<n-1:
while i<n-1 and prices[i]>=prices[i+1]:i+=1
#找到波谷
valley=prices[i]
count+=1
while i<n-1 and prices[i]<=prices[i+1]:i+=1
#找到波峰
peak=prices[i]
count+=1
profit+=peak-valley
if profit==0:count=0
return profit,count