122. 买卖股票的最佳时机 II

题目

代码

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //总的利润        
        int maxSalary=0;

        if(prices.size()==0)
            return maxSalary;
        vector<int> step;
        //计算出prices[i+1]-prices[i]的值
        for(int i=0;i<prices.size()-1;i++)
        {
            step.push_back(prices[i+1]-prices[i]);
        }
        //如果是正数,则加入到总利润中
        for(auto i:step)
        {
            if(i>0)
                maxSalary+=i;
        }
        return maxSalary;
    }
};

思路

如例子[1,2,3,4,5],我们发现总利润4=(2-1)+(3-2)+(4-3)+(5-4)。而[7,1,5,3,6,4]按照上面的代码可以算出 [-6,4,-2,3,-2],取正数,则总利润=7。我们只需要把pos+1的值减去pos的值来判断正负,正数则说明可以卖出,负数则说明不能卖出。这样取得的利润最大。

https://github.com/li-zheng-hao
原文地址:https://www.cnblogs.com/lizhenghao126/p/11053655.html