思路
遍历整个数组,只要当天卖出去能比前一天买进来的利润大就可以直接相减,再把总利润相加。
很自然有一个问题就是,为什么今天的股票又能卖出去,又能买进来?试想一下1 2 3这三个的最大利润为3-1=2,而同样的可以先用中间数减去最小的数2-1=1再加上最大的数减去中间数3-2=1,这样求得的最大利润也同样是2。
代码
class Solution {
public:
int maxProfit(vector<int>& prices) {
int i=0,j=1;
int length = prices.size();
if(length<2) return 0;
int sum=0;
while(j<length){
if(prices[j]>prices[i]){
sum+=(prices[j]-prices[i]);
}
++i;++j;
}
return sum;
}
};