补充上一篇文章- leetcode买卖股票的最佳时机II

mac2026-08-09  5

题目描述: 思路:与上一道题的有一点不同,就是增加一个要求,即可以进行多次交易,然后求出最大的利润;因此只需要在上个代码当中加上一个部分,用另一种方法求解,然后再比较大小,这个方法的思路为:只要后面一个数比前面一个数大,就求它们的差值,把这些差值相加,就是多次交易的利润(注意在计算中,求差时,一个数可以被使用两次,即[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); } };
最新回复(0)