贪心解法, 写的不对的欢迎指正!
时间:O(n)
空间:O(1)

// NC134股票(无限次交易)
//最大利润即为每个上升段的差额
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 计算最大收益
     * @param prices int整型vector 股票每一天的价格
     * @return int整型
     */
    int maxProfit(vector<int>& prices) {
        // write code here
        int sum=0;//总利润
        int len=prices.size();
        if(len<=1) return 0;
        int max_tmp=prices[0];//默认第一个是最大的
        int min_tmp=prices[0];//默认第一个是最小的
        for(int i=1;i<len;++i){
            if(prices[i]<prices[i-1]){
                //如果当天股价 比前一天低
                //就更新当前最大利润为:max减去min,并累加到sum
                //更新最低股价为:当天价格。并将最高股价也更新成一样的
                if(max_tmp>min_tmp){
                    sum+= max_tmp-min_tmp ;    
                }
                min_tmp=prices[i];//更新最低股价为:当天价格。
                max_tmp=prices[i];//更新最高股价为:当天价格。
            }else{
                max_tmp=prices[i];//如果当天股价 >前一天,最高价格更新为当前的
            }

        }
        return sum+max_tmp-min_tmp;//最后一天股价可能比前一天高
    }
};