思路:扫描一遍数组,如果股票价格下降,分两种情况讨论:
1)刚好在波峰下降,这个时候就要实行一次交易(早已记录好波谷值,即最小值);
2)还没达到波谷,更新最小值。
如果序列上升,则要标记好最小值,只等达到波峰就进行交易。
code:
class Solution {
public:
int maxProfit(vector<int> &prices) {
int len = prices.size();
if(len == 0)return 0;
int ret = 0, curMin = prices[0];
bool flag = false;
for(int i = 1;i < len;i++){
if(prices[i] < prices[i-1]){
if(flag){
ret += (prices[i-1] - curMin);
flag = false;
}
curMin = prices[i];
}
else{
flag = true;
}
}
if(flag)
ret += (prices[len-1] - curMin);
return ret;
}
};