题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?例如,一只股票在某些时间节点的价格为{9,11,8,5,7,12,16,14}.如果我们能再价格为5时候买入并在价格为16时卖出,则能收获最大的利润11.
思路:再扫描到数组中的第i个数字时,只要能记住之前i-1个数字中的最小值,就能算出在当前价位卖出时可能得到的最大利润。
c++实现:
int maxdiff(vector<int>& prices)
{
int len = prices.size();
if(len <= 1)
return 0;
int min = prices[0];
int maxdiff = prices[1] - min;
for(int i = 2; i<length; i++)
{
if(prices[i-1]<min)
min = prices[i-1];
int currentdiff = prices[i] - min;
if(currentdiff > maxdiff)
maxdiff = currentdiff;
}
return maxdiff;
}