1. 程式人生 > >122. 買賣股票的最佳時機 II

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的值來判斷正負,正數則說明可以賣出,負數則說明不能賣出。這樣取得的利潤最大。