一开始没仔细看题目,没看懂II跟I的区别。后来发现是每天都要进行买/卖的操作。
底下的评论有一张图片解释得非常清晰:
我们想买遍整个价格上升段,下降段全都避开。
因此可以采用贪心算法。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int profit = 0;
int n = prices.size();
for(int i=1;i<n;i++){
if(prices[i]>prices[i-1]){
profit += prices[i]-prices[i-1];
}
}
return profit;
}
};
时间复杂度为O(n)。