力扣122. 买卖股票的最佳时机 II
题目来源(力扣):
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/
题目描述:
给出一支股票的价格情况,问如何买卖可以得到最大收益,返回最大收益。要求最多只能持有1股。
基本思路:
理论上来说,应该在价格最低时买入,价格最高时卖出。
但是实际上,以[1,3,7]为例
在价格为1时买入,价格为7时卖出,收益为6。
在价格为1时买入,价格为3时卖出,收益为2;再在价格为3时买入,价格为7时卖出,收益为4;总收益也是6。
因此对于第i天,只要第i-1天的价格更低,就进行股票买卖。
最终收益与“低买高卖”完全相同。
代码实现:
class Solution
{
public:
int maxProfit(vector<int> &prices)
{
int ans = 0;
for (int i = 1; i < prices.size(); i++)
{
if (prices[i] > prices[i - 1])
ans += prices[i] - prices[i - 1];
}
return ans;
}
};
时间复杂度
O(n)
题外话
所以说如果一个人真的能够预测股票情况(哪怕只是较短时间内的),那么他就能通过买卖股票成为百万富翁
当然,我们普通人还是别想了~
浙公网安备 33010602011771号