#122 买卖股票的最佳时机 II(贪心算法)

122. 买卖股票的最佳时机 II - 力扣(LeetCode)

问题转移:df[i]为i-1购入i卖出获得的净收益,df[0]=0。考虑连续盈利情况,例如1买2卖,2卖3卖,等同于1买3卖,因此结果不变。

描述转移后的问题:如何在一定时期内,进行尽可能多的盈利行为。

添加虚拟节点profits=0作为问题的起点。

贪心选择:由于行为按时间索引排序,顺序向后寻找到的第一个盈利行为作为最优选择。

子问题:保证非空子问题Sk为k后的其他行为。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int profits=0;
        int size=prices.size();
        for(int i=1;i<size;i++){
            int daily_p=prices[i]-prices[i-1];
            if(daily_p>0) profits+=daily_p;
        }
        return profits;
    }
};