题目:芯片交易买入卖出
数组 prices 记录了某芯片近期的交易价格,其中 prices[i] 表示的 i 天该芯片的价格。你只能选择 某一天 买入芯片,并选择在 未来的某一个不同的日子 卖出该芯片。请设计一个算法计算并返回你从这笔交易中能获取的最大利润。
如果你不能获取任何利润,返回 0。
代码:
int bestTiming(vector<int>& prices) {
int n = prices.size();
if (n == 0) return 0;
int *p = new int[n];
int cost = prices[0];
for (int i = 1; i < n; i++) {
cost = min(cost, prices[i]);
p[i] = max(p[i - 1], prices[i] - cost);
}
int value = p[n - 1];
delete[] p;
p = NULL;
return value;
}