题目描述:
给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
方法一:
class Solution {
public:
int maxProfit(vector<int>& prices) {
if (prices.size() <= 1)
{
return 0;
}
int maxprofit = 0;
for (int i = 1; i < prices.size(); i++)
{
if (prices[i] > prices[i - 1])
{
maxprofit += (prices[i] - prices[i-1]);//如果后一天比前一天的价格大,就直接买卖
}
}
return maxprofit;
}
};
这道题冥思苦想了许久,实在没有思路,于是去官方题解看了看,在下方的评论里发现了这个解法,给了我当头一棒,实在想不到这样令人惊叹的简单解法,题目中也确实没有提到说同一天内不能同时进行买和卖,受到了上一题的影响,直接给默认这题也是买和卖必须是不同的两天,读懂题目属实也是解题的一大关键。