码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 121. Best Time to Buy and Sell Stock

时间:2018-10-11 18:46:29      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:不用   开始   第一个   方法   如何   技术   etc   记录   而不是   

技术分享图片

 昨晚和同学比赛做题,随机挑到了这题。说下我的思路

首先最先想到的是,从第一个数开始遍历,然后再从这个数的后面找出一个最大的数,当然相当于是循环套循环O(n2)的时间复杂度。

方法可行是可行,但是当数据变得很大的时候时间通不过。接着再想

比如当前已经有一个收益了,那么如何产生一个更大的收益,要素就是我的进价 更低,或者卖价更高。两者可以同时存在。

所以我们不妨这么想,当我们之前遍历的时候,遍历完第一个数以后 是不是下一次从第二个数开始遍历,然后第三个,第四个,但真的需要这样做吗

其实如果第二个数本身比第一个数大,那我们根本不用去在用它遍历一遍了,因为你的后面卖价都一样,进价贵了啊,收益小了。不会产生更大的收益

所以我第二个想法就是我记录当前进价,如果找到比它更小的数 就更新它,如果不比它小当然就是计算收益啊。

这里有一点 为什么我遇到比它小就更新它 而不是继续计算之后的数产生的收益。原因同上,因为你的卖价都一样,进价贵了啊,收益小了。

比如我现在是2,3,1,9

我现在是2 当我遇到 1 的时候 我就不需要再去计算1 和 2 收益 然后再去计算 9 和 2 产生的收益了。我直接计算1 和 9的收益就好了。

这样我就找到了一个可以遍历一次找到最大收益的方法了。说的实在是太啰嗦了

技术分享图片

 

Leetcode 121. Best Time to Buy and Sell Stock

标签:不用   开始   第一个   方法   如何   技术   etc   记录   而不是   

原文地址:https://www.cnblogs.com/winder-knight/p/9773757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!