力扣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)

题外话

所以说如果一个人真的能够预测股票情况(哪怕只是较短时间内的),那么他就能通过买卖股票成为百万富翁

当然,我们普通人还是别想了~

posted @ 2024-11-08 16:09  HB_Computer  阅读(62)  评论(0)    收藏  举报