问题:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
思路:保存最小值,将当前值与最小值做差,如果大于最大利润,则更新最大利润。遍历结束,得到最大利润。
代码:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int min=INT_MAX;
int len=prices.size();
if(len<2)
return 0;
int res=0;
for(int i=0;i<len;++i)
{
if(prices[i]<min)
min=prices[i];
int diff=prices[i]-min;
if(diff>res)
res=diff;
}
return res;
}
};
复杂度分析:时间复杂度为O(n),空间复杂度为O(1).