题目为 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
注意:你不能在买入股票前卖出股票。
思路很简单,遍历数组,存储该节点前的最小值,还要在遍历时存储该节点减去该节点前的最大值。代码如下
public int MaxProfit(int[] prices)
{
int beforeMin = int.MaxValue;
int Max = 0;
for (int i = 0; i < prices.Count(); i++)
{
Max = Max < prices[i] - beforeMin ? prices[i] - beforeMin : Max;
beforeMin = beforeMin < prices[i] ? beforeMin : prices[i];
}
return Max;
}