第一题
题目描述:
给定一段时间内每天的股票价格,已知你只可以买卖各一次,求最大的收益。
输入输出样例:
输入一个一维整数数组,表示每天的股票价格;输出一个整数,表示最大的收益。
Input:[7,1,5,3,6,4] |
---|
Output:5 |
在这个样例中,最大的利润为在第二天价格为 1 时买入,在第五天价格为 6 时卖出。
题解:
我们可以遍历一遍数组,在每一个位置 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]);
sell = max(sell, buy + prices[i]);
}
return sell;
}
第二题
题目描述:
给定一段时间内每天的股票价格,已知你只可以买卖各 k 次,且每次只能拥有一支股票,求 最大的收益。