📌  相关文章
📜  用于股票买卖以最大化利润的 Javascript 程序

📅  最后修改于: 2022-05-13 01:57:52.518000             🧑  作者: Mango

用于股票买卖以最大化利润的 Javascript 程序

股票每天的成本以数组的形式给出,找出你在那些日子里通过买卖可以获得的最大利润。例如,如果给定数组是 {100, 180, 260, 310, 40, 535, 695},则可以通过在第 0 天买入,在第 3 天卖出来获得最大利润。再次在第 4 天买入并在第 6 天卖出. 如果给定的价格数组按降序排序,则根本无法赚取利润。

幼稚的方法:一种简单的方法是尝试在获利的每一天买入股票并卖出,并不断更新迄今为止的最大利润。

下面是上述方法的实现:

Javascript


Javascript


输出:

865

有效的方法:如果我们只允许买卖一次,那么我们可以使用以下算法。两个元素之间的最大差异。在这里,我们可以多次买卖。
下面是这个问题的算法。

  1. 找到局部最小值并将其存储为起始索引。如果不存在,则返回。
  2. 找到局部最大值。并将其存储为结束索引。如果我们到达结尾,则将结尾设置为结束索引。
  3. 更新解决方案(增加买卖对的计数)
  4. 如果没有到达终点,重复上述步骤。

Javascript


输出:

Buy on day: 0     Sell on day: 3
Buy on day: 4     Sell on day: 6

时间复杂度:外循环一直运行到我变成 n-1。内部两个循环在每次迭代中增加 I 的值。所以整体时间复杂度是 O(n)

请参阅完整的股票买卖以最大化利润的文章了解更多详情!