第三十四天 Best Time to Buy and Sell
2018-09-26 本文已影响11人
业余马拉松选手
今天心情,或是说现在心情,真的特别特别不好
因为一些杂事,心情很郁闷,想发火,却又发不出来,状态特别不好
强逼着自己刷了一道不太擅长的题目
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/submissions/1
这道题,是可以通过画图来思考的
简单描述下,其实我们需要的就从价格的最低点买入,然后在最高点卖出。那么当然这是有时间顺序的,同时你可以发现,每次的相邻之间的价格高低的区间,叠加起来,就是最低点买入最高点卖出的间隔。
好吧,这一步确实有点抽象,但如果能想明白了,代码就很简单了,也很好理解,在网上还摘抄了这样一段理解,感觉更简单些。
我们都知道炒股想挣钱当然是低价买入高价抛出,那么这里我们只需要从第二天开始,如果当前价格比之前价格高,则把差值加入利润中,因为我们可以昨天买入,今日卖出,若明日价更高的话,还可以今日买入,明日再抛出。以此类推,遍历完整个数组后即可求得最大利润。
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
ret = 0
for i in range(1,len(prices)):
if prices[i]>prices[i-1]:
ret += prices[i]-prices[i-1]
return ret
心情不好,任务也没完成,困,怒