题目链接:点击查看
题目描述:
给定一段时间内每天的股票价格,已知你只可以买卖各一次,求最大的收益。
输入输出:
输入:[7,1,5,3,6,4] 输出:5
输入:[7,6,4,3,1] 输出:0
题目分析:
我们可以遍历一遍数组,在每一个位置
i
时,记录
i
位置之前所有价格中的最低价格,然后将当前的价格作为售出价格,查看当前收益是不是最大收益即可。
代码:
int maxProfit(vector<int>&prices)
{
int sell=0,buy=INT_MIN;
for(int i=0;i<prices.size();++i)
{
buy=max(buy,-prices[i]);//在price[i]前加 -号可以用max取最小值 也方便sell中的运算buy+price[i]与buy之间取最大值
sell=max(sell,buy+prices[i]);
}
return sell;
}