思路:这个基本上就只要在Ⅰ的基础上稍微改下即可,找到一个小的值就得和后面的大的值箱配对,然后继续找小值和大值,这样才能保证最大利润; 像 [1,2,3,4,5] 最大利润为第五天 - 第一天=4,也可以这么想:第一天买第二天抛,赚了1,第二天买第三天抛,赚了1,重复下来,最大利润也是4;
int maxProfit(vector<int> &prices)
{
int result = 0;
int len = prices.size();
if (len < 2)
return 0;
int min = prices[0];
for (int i = 1; i < len; i++)
{
if (prices[i] < min) //如果今天比之前的最小值还要小,就更新今天为最小值
{
min = prices[i];
continue;
}
//如果今天是大值,那么就是要抛出去赚钱
result += prices[i] - min;
//把今天作为最小值相当于从今天开始继续重复上面的循环,求最大总利润
min = prices[i];
}
return result;
}