【发布时间】:2016-05-04 01:03:34
【问题描述】:
这就像一个股票营销问题,我很困惑,问题是如何获得每天的最大利润?我只知道算法的时间复杂度可以是O(n)或者O(n log2 n)。
输入是 A,一个股票价格数组。对于第 i 天,最好的交易是在第 i 天买入并在随后一天卖出可以实现的最大利润。为方便起见,您可以将最后一天的最佳交易简单地定义为 -A[n](因为如果您在最后一天买入,您将无法卖出并且您损失了所有的钱)。 给出一个算法的伪代码,该算法返回一个数组,该数组包含 A 中每天的最大利润。
更新:我现在了解如何获得最大利润,我可以使用类似于分治合并排序的算法来找到这个最大利润。我的问题是使用时间复杂度 O(n) 来找到最大利润的另一种方法(算法)是什么,或者我该如何以这种方式接近?
【问题讨论】:
-
它基本上告诉你找到每天交易的最小值和最大值。您以 MIN(i) 买入并以 MAX(i+1) 卖出,除了您不再购买的最后一天。
-
每天识别
S的股票,其中price(S, n+1)/price(S, n)尽可能大。如果它小于 1,请当天坐在外面。否则尽可能多地购买 S。
标签: algorithm