0%

Leetcode112-买卖股票的最佳时机 II

解答

贪心策略为:只要知道今天比昨天赚钱,我就一定能把这点钱给赚了且能保证绝不在任意一天亏钱!具体可以按如下方法操作:

假如我知道第 i+1 天股价高于第 i 天,那就一定可以赚到这笔钱。

假如我在第 i 天未持有股票,那就选择购买股票
假如我在第 i 天持有股票,那保留股票即可,无需操作

假如我知道第 i+1 天股价低于第 i 天,我一定可以保证不亏钱。

假如我在第 i 天未持有股票,那就不进行操作
假如我在第 i 天持有股票,那就售出股票

在知道一定可以赚取所有收益且无任何亏损的情况下就不必实际进行买卖操作了,只需计算出前后两天之间的股价差,把所有的正值累加即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
int maxProfit(vector<int>& prices) {
int postiveSum = 0;
for (int i=1; i<prices.size(); i++) {
int diff = prices[i] - prices[i-1];
if (diff > 0) {
postiveSum += diff;
}
}
return postiveSum;
}
};