解题思路:
\qquad
这个题如果把每一种买卖的可能都算出来的解法时间复杂度在
O
(
n
2
)
O(n^2)
O(n2),提交后会超时,所以需要在此基础上进行优化,能否通过一次遍历找出最大利润。
\qquad
对于当前点i
,卖出股票所能得到的最大利润 = 当前股票价格 - [0, i-1]
天股票价格的最小值。
\qquad
由于是从前向后逐个遍历,很容易可以记录之前股票价格的最小值,遍历完成后将最大差值输出即可。
int maxProfit(vector<int>& prices) {
int maxi = 0;
int mini = prices[0];
for(int p : prices)
{
mini = min(mini, p);
maxi = max(maxi, p-mini);
}
return maxi;
}