https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/

数组的最大2子段和,允许在一天内买入又卖出,相当于不交易。因为题目规定的是最多交易两次,而不是必须交易两次。
class Solution {
public:
int maxProfit(vector<int>& prices) {
int n = prices.size();
if(n<2) return 0;
vector<int> f(n,0);
vector<int> g(n,0);
int i;
int mini = prices[0];
for(i=1;i<n;i++){
mini=min(prices[i], mini);
f[i]=max(prices[i]-mini, f[i-1]);
}
int maxi = prices[n-1];
for(i=n-2;i>-1;i--){
maxi=max(prices[i], maxi);
g[i]=max(maxi-prices[i], g[i+1]);
}
int result = 0;
for(i=0;i<n;i++){
result = max(result, f[i]+g[i]);
}
return result;
}
};
本文探讨了在限定交易次数的情况下,如何确定最佳的股票买卖时机以最大化利润。通过动态规划算法,详细解析了LeetCode上的一道经典问题:Best Time to Buy and Sell Stock III,并提供了完整的代码实现。

7751

被折叠的 条评论
为什么被折叠?



