// 面试题63:股票的最大利润
// 题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股
// 票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5,
// 7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能
// 收获最大的利润11。
static bool get_max_profit(const std::vector<int>& arr, int& profit)
{
if(arr.size() < 2)
{
return false;
}
int min = arr[0];
profit = arr[1] - min;
for(uint32_t i = 2; i < arr.size(); ++i)
{
if(arr[i - 1] < min)
{
min = arr[i - 1];
}
int temp = arr[i] - min;
if(temp > profit)
{
profit = temp;
}
}
return true;
}