1 <= prices.length <= 3 * 104
0 <= prices[i] <= 104
class Solution {
public:
int maxProfit(vector<int>& prices) {
int max_profit = 0; // 初始化最大利润为 0
for (int i = 1; i < prices.size(); ++i) {
if (prices[i] > prices[i - 1]) {
max_profit += prices[i] - prices[i - 1];
}
}
return max_profit; // 返回总利润
}
};
由于可以每天进行买入和卖出操作,所以所有获上涨部分,即prices[i] - prices[i - 1]>0,就是利润。
如果 prices = [1, 2, 3, 4, 5]
- 第 1 天,股票价格是 1,可以买入。
-
第 2 天,股票价格是 2,可以卖出,赚取
2 - 1 = 1
的利润。 - 第 2 天,股票价格是 2,可以再买入。
-
第 3 天,股票价格是 3,可以卖出,赚取
3 - 2 = 1
的利润。 - 第 3 天,股票价格是 3,可以再买入。
-
第 4 天,股票价格是 4,可以卖出,赚取
4 - 3 = 1
的利润。 - 第 4 天,股票价格是 4,可以再买入。
-
第 5 天,股票价格是 5,可以卖出,赚取
5 - 4 = 1
的利润。