Leetcode刷题笔记

第三十四天 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

心情不好,任务也没完成,困,怒

上一篇下一篇

猜你喜欢

热点阅读