题目描述: 思路:与上一道题的有一点不同,就是增加一个要求,即可以进行多次交易,然后求出最大的利润;因此只需要在上个代码当中加上一个部分,用另一种方法求解,然后再比较大小,这个方法的思路为:只要后面一个数比前面一个数大,就求它们的差值,把这些差值相加,就是多次交易的利润(注意在计算中,求差时,一个数可以被使用两次,即[1,2,3],2与1的差加上3与2的差) 代码如下:
class Solution {
public:
int maxProfit(vector
<int>& prices
) {
int dif1
=0,dif2
=0;
if(prices
.size()<2) return 0;
if(prices
.size()>=2){
int min
=prices
[0],i
=1;
while(i
<prices
.size()){
if(min
>prices
[i
])
min
=prices
[i
];
else if(prices
[i
]-min
>dif1
)
dif1
=prices
[i
]-min
;
if(prices
[i
-1]<prices
[i
])
dif2
+=prices
[i
]-prices
[i
-1];
i
++;
}
}
return max(dif1
,dif2
);
}
};