一开始是求2维dp,不行,然后以为是像上一题那样,那么只需要找出每一个买入点和卖出点。其实每一个买入和卖出就是一个连续上升序列,只需要求出每一个上升序列再求和就ok,记得遍历最后一个点的时候也要在求一次,别漏了。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int minn, sum;
if(prices.size() == 0) return 0;
minn = prices[0];
sum = 0;
for(int i = 1; i < prices.size(); ++ i){
if(prices[i] < prices[i - 1]){
sum = sum + prices[i - 1] - minn;
minn = prices[i];
}
}
sum = sum + prices[prices.size() - 1] - minn;
return sum;
}
};