题目:
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
思路:
需要确定利润为负数时,即股票一直在跌的时候,要不要卖出
保存卖出前的最低买入价,用当前卖出价减去最低买入价,即当前能获得的最大利润,逐步向后遍历整个数组,得到最大利润
代码实现:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int len = prices.size();
if(len < 2)
return 0;
int min = prices[0];
int result = prices[1] - min;
for(int i = 2; i < len; i++)
{
if(prices[i - 1] < min)
min = prices[i - 1];
if((prices[i] - min) > result)
result = prices[i] - min;
}
if(result < 0)
result = 0;
return result;
}
};