【发布时间】:2015-02-18 15:50:21
【问题描述】:
我有一个项目,内容如下:
给定一天内按时间顺序排列的一系列股票价格。 找出先买入再卖出股票所能获得的最大利润。 该函数接收指向数组的指针和相应的数组大小。
基本上我必须找到一个最小值,然后找到一个最大值(具有更高的索引)以产生最大可能的利润。最大 - 最小。
Sample data:
price[0]=100;
price[1]=5;
price[2]=7;
price[3]=34;
price[4]=100;
price[5]=2;
Output Based on Sample Data:
The best possible profit would be if one bought at point 1 and sold at point 4 for 100-5 = 95 a share.
我在想 - 我有两个小的 min 和 max 函数。
Min 函数找到返回最小值位置索引的最小值。
然后我们将指针移动到 min_index +1 并将其传递给函数以找到最大值。然后max函数返回max_index;
然后我们将取 max_index 值并减去 min_index 值。我不知道这是否是最好的方法,甚至是一个好方法。我也不完全确定在 c++ 中编码的最佳方法
谢谢。
【问题讨论】:
-
不适用于
2 100 1 2。 -
它们没有排序 - 它们需要保持原样,因为您只能在购买后出售。所以必须在最小值之后找到最大值。目标是找到最大的差异,因此最大值必须在最小值之后