题目
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。
注意:你不能在买入股票前卖出股票。
样例
输入: 7 1 5 3 6 4
输出: 5
输入: 7 6 4 3 1
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
code
每天更新一次最大利润和目前为止的最小值
int maxProfit(vector<int>& prices) {
int n = prices.size();
int minprice = int(1e9);
int maxprofit = 0;
for (int i = 0; i < n; i++) {
maxprofit = max(maxprofit, prices[i] - minprice);
minprice = min(minprice, prices[i]);
}
return maxprofit;
}