即是求整个波浪线的上升过程,解法略显繁琐,当可以直接采用判断,若数组中元素后一个比前一个大,则不断累加的方法。
class Solution {
public:
int maxProfit(vector<int> &prices) {
int low;
int high;
int maxPro=0;
int flag=1;//判断增减
if(prices.size()<2) return 0;
low=prices[0];
high=prices[0];
for(int i=1;i<prices.size();i++){
if(prices[i]<prices[i-1]){
if(flag==1){
maxPro+=high-low;
flag=0;
}
low=prices[i];
}
if(prices[i]>=prices[i-1]){
high=prices[i];
flag=1;
}
}
if(flag==1) maxPro+=high-low;
return maxPro;
}
};