JavaScript 中的股票最大收益算法

在Udemy的视频教程 Learning Algorithms In JavaScript From Scratch 中的第十六讲,有个例子:给定某一支股票在一段儿时间内每天的价格,计算可能的最大收益。视频教程的讲师给出的算法存在些问题,计算出来的,并不是可能的最大收益,这里给出更好的算法。

 

 

实例背景和原始算法

假设某一支股票,在一段儿时间内,每天的价格如下所示:

计算出股民可能的最大盈利。

视频的讲师给出的算法是这样的:

使用这个算法计算并输出:

得出的结果是22,那个视频的讲师也比较认同这个结果,可是实际上,这段时间内的最大收益,应该是36才对,具体操作如下:

在这天买入: 0 ,在这天卖出:1

在这天买入: 2 ,在这天卖出:5

 

第一次:买入价格是32,卖出价格是46,收益14;

第二次:买入价格是26,卖出价格是48,收益22;

以上两次操作实际收益为 14+22=36,没有比这个收益更大的收益了,所以,36是这段时间内,这只股票可能的最大收益。

算法优化

优化后的算法是:

用它进行计算:

得到的输出是:

上述输出中的 sol 是买入卖出的解决方案, maxProfit 表示这段时间这支股票的最大收益值。

问题出在哪儿?

读者自己想一下吧!看你能不能给出答案!

该作者在有大米还有几套教程,其中,也就这个教程和 Learning Algorithms In JavaScript From Scratch 有些营养吧。


error: 错误信息!