Leetcode 121. Best Time to Buy and Sell Stock
Posted winder-knight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 121. Best Time to Buy and Sell Stock相关的知识,希望对你有一定的参考价值。
昨晚和同学比赛做题,随机挑到了这题。说下我的思路
首先最先想到的是,从第一个数开始遍历,然后再从这个数的后面找出一个最大的数,当然相当于是循环套循环O(n2)的时间复杂度。
方法可行是可行,但是当数据变得很大的时候时间通不过。接着再想
比如当前已经有一个收益了,那么如何产生一个更大的收益,要素就是我的进价 更低,或者卖价更高。两者可以同时存在。
所以我们不妨这么想,当我们之前遍历的时候,遍历完第一个数以后 是不是下一次从第二个数开始遍历,然后第三个,第四个,但真的需要这样做吗
其实如果第二个数本身比第一个数大,那我们根本不用去在用它遍历一遍了,因为你的后面卖价都一样,进价贵了啊,收益小了。不会产生更大的收益
所以我第二个想法就是我记录当前进价,如果找到比它更小的数 就更新它,如果不比它小当然就是计算收益啊。
这里有一点 为什么我遇到比它小就更新它 而不是继续计算之后的数产生的收益。原因同上,因为你的卖价都一样,进价贵了啊,收益小了。
比如我现在是2,3,1,9
我现在是2 当我遇到 1 的时候 我就不需要再去计算1 和 2 收益 然后再去计算 9 和 2 产生的收益了。我直接计算1 和 9的收益就好了。
这样我就找到了一个可以遍历一次找到最大收益的方法了。说的实在是太啰嗦了
以上是关于Leetcode 121. Best Time to Buy and Sell Stock的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode OJ 121. Best Time to Buy and Sell Stock
Leetcode 121 Best Time to Buy and Sell Stock
LeetCode 121: Best Time to Buy and Sell Stock
LeetCode 121 Best Time to Buy and Sell Stock