122. 買賣股票的最佳時機 II
阿新 • • 發佈:2018-12-09
題目
程式碼
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的值來判斷正負,正數則說明可以賣出,負數則說明不能賣出。這樣取得的利潤最大。