此题还好,只要计算出每一个之间的差值,然后把正数都累加起来就是结果,因为肯定在正的时候买入,一连串正值就表示一直不卖,直到遇到负值,其结果也就相当于这一连串正值的累加。注意判断空值情况,且注意计算差值从后往前,因为从前往后会更新prices[i-1]
class Solution {
public:int maxProfit(vector<int>& prices) {
if(prices.empty())
return 0;
int result=0;
for(int i=prices.size()-1;i>0;i--)
prices[i]=prices[i]-prices[i-1];
for(int i=1;i<prices.size();i++){
if(prices[i]>0)
result+=prices[i];
}
return result;
}
};